Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
AccAOI
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c00b7345
由
LN
编写于
2019-08-02 17:15:12 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加测试效果图显示。
1 个父辈
4645d3ac
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
122 行增加
和
36 行删除
AOI/AoiProject.cs
AOI/mark/AoiMarkMethod.cs
AccAOI/FrmAoiSetting.Designer.cs
AccAOI/FrmAoiSetting.cs
AccAOI/control/ABaseControl.cs
AccAOI/control/AioMarkControl.cs
AccAOI/control/AioTempMatchControl.cs
AOI/AoiProject.cs
查看文件 @
c00b734
...
...
@@ -14,7 +14,10 @@ namespace AOI
{
public
class
AoiProject
{
private
AoiProject
()
{
}
public
AoiProject
(
Image
theImage
)
{
this
.
standardImage
=
theImage
;
...
...
@@ -102,13 +105,15 @@ namespace AOI
/// 加载项目
/// </summary>
/// <param name="filePath"></param>
public
st
ring
Load
(
string
filePath
)
public
st
atic
AoiProject
Load
(
string
filePath
,
out
string
msg
)
{
msg
=
""
;
try
{
AoiProject
aoiProject
=
new
AoiProject
();
Dictionary
<
string
,
string
>
projectMap
=
JsonUtil
.
DeserializeJsonToObjectFromFile
<
Dictionary
<
string
,
string
>>(
filePath
);
string
base64Img
=
projectMap
[
"base64Img"
];
this
.
standardImage
=
Base64Util
.
ToImage
(
base64Img
);
aoiProject
.
standardImage
=
Base64Util
.
ToImage
(
base64Img
);
string
methodMapJson
=
projectMap
[
"methodMap"
];
var
jsonMap
=
JsonUtil
.
DeserializeJsonToObject
<
Dictionary
<
string
,
string
>>(
methodMapJson
);
foreach
(
var
item
in
jsonMap
)
...
...
@@ -123,14 +128,17 @@ namespace AOI
string
PathDataStr
=
obj
.
Value
<
string
>(
"PathDataStr"
);
PathData
pathData
=
JsonUtil
.
DeserializeJsonToObject
<
PathData
>(
PathDataStr
);
aoiMethod
.
RoiPath
=
new
GraphicsPath
(
pathData
.
Points
,
pathData
.
Types
);
methodMap
.
Add
(
item
.
Key
,
aoiMethod
);
return
""
;
aoiProject
.
methodMap
.
Add
(
item
.
Key
,
aoiMethod
);
}
}
catch
(
Exception
ex
)
return
aoiProject
;
}
catch
(
Exception
ex
)
{
return
ex
.
ToString
();
msg
=
ex
.
ToString
();
return
null
;
}
return
""
;
}
...
...
AOI/mark/AoiMarkMethod.cs
查看文件 @
c00b734
...
...
@@ -69,6 +69,7 @@ namespace AOI
if
(
resultImage
!=
null
)
{
resultBean
.
result
=
true
;
resultBean
.
currentRoiImage
=
resultImage
;
}
return
resultBean
;
}
...
...
@@ -152,10 +153,10 @@ namespace AOI
Mat
fixedMat
=
new
Mat
();
Cv2
.
WarpAffine
(
matToCheck
,
fixedMat
,
affine
,
new
OpenCvSharp
.
Size
(
standardImage
.
Width
,
standardImage
.
Height
));
//var fixedMat = FixImage(affine, matToCheck);
Image
markImage
=
GetRoiImage
(
ImageUtil
.
ToImage
(
fixedMat
),
RoiPath
,
true
);
//Cv2.ImShow("Fixed", ImageUtil.ToMat(markImage))
;
//return ImageUtil.ToImage(fixedMat
);
return
markImage
;
//
Image markImage = GetRoiImage(ImageUtil.ToImage(fixedMat), RoiPath, true);
// return markImage
;
// Cv2.ImShow("Fixed", ImageUtil.ToMat(markImage)
);
return
ImageUtil
.
ToImage
(
fixedMat
)
;
}
//bool needCut = false;
////标准图中的Mart区域
...
...
AccAOI/FrmAoiSetting.Designer.cs
查看文件 @
c00b734
此文件的差异被折叠,
点击展开。
AccAOI/FrmAoiSetting.cs
查看文件 @
c00b734
...
...
@@ -15,7 +15,8 @@ namespace AccAOI
public
partial
class
FrmAoiSetting
:
Asa
.
Theme
.
FlatForm
{
private
control
.
ABaseControl
aoiControl
=
null
;
public
static
Image
Img
=
null
;
public
static
Image
BaseImg
=
null
;
public
static
Image
TestImage
=
null
;
private
AoiProject
Project
=
null
;
private
bool
CanSel
=
true
;
private
string
DefaultPath
=
""
;
...
...
@@ -30,8 +31,10 @@ namespace AccAOI
this
.
WindowState
=
FormWindowState
.
Maximized
;
if
(!
programPath
.
Equals
(
""
)
&&
(
image
!=
null
))
{
Project
=
new
AoiProject
(
image
);
string
result
=
Project
.
Load
(
programPath
);
BaseImg
=
image
;
// Project = new AoiProject(image);
string
result
=
""
;
Project
=
AoiProject
.
Load
(
programPath
,
out
result
);
if
(!
result
.
Equals
(
""
))
{
MessageBox
.
Show
(
"加载项目"
+
programPath
+
"失败:\r\n"
+
result
);
...
...
@@ -52,8 +55,8 @@ namespace AccAOI
if
(
System
.
IO
.
File
.
Exists
(
defaultImg
))
{
//读取图片内容
Img
=
(
Image
)
Image
.
FromFile
(
defaultImg
).
Clone
();
imageBox1
.
Image
=
Img
;
Base
Img
=
(
Image
)
Image
.
FromFile
(
defaultImg
).
Clone
();
imageBox1
.
Image
=
Base
Img
;
}
}
...
...
@@ -73,8 +76,16 @@ namespace AccAOI
string
fileName
=
openDialog
.
FileName
;
//读取图片内容
Img
=
(
Image
)
Image
.
FromFile
(
fileName
).
Clone
();
imageBox1
.
Image
=
Img
;
BaseImg
=
(
Image
)
Image
.
FromFile
(
fileName
).
Clone
();
if
(
Project
!=
null
)
{
Project
.
standardImage
=
BaseImg
;
}
imageBox1
.
Image
=
BaseImg
;
if
(
imageBox1
.
Visible
.
Equals
(
false
))
{
btnImageChange_Click
(
null
,
null
);
}
}
private
void
btnGetCameraImg_Click
(
object
sender
,
EventArgs
e
)
...
...
@@ -103,8 +114,9 @@ namespace AccAOI
return
;
}
string
fileName
=
openDialog
.
FileName
;
Project
=
new
AoiProject
(
Img
);
string
msg
=
Project
.
Load
(
fileName
);
// Project = new AoiProject(BaseImg);
string
msg
=
""
;
Project
=
AoiProject
.
Load
(
fileName
,
out
msg
);
if
(!
msg
.
Equals
(
""
))
{
MessageBox
.
Show
(
"加载项目"
+
fileName
+
"失败:\r\n"
+
msg
);
...
...
@@ -140,14 +152,14 @@ namespace AccAOI
private
void
btnNewAoi_Click
(
object
sender
,
EventArgs
e
)
{
if
(
Img
==
null
)
if
(
Base
Img
==
null
)
{
MessageBox
.
Show
(
"清先
打开
图片"
);
MessageBox
.
Show
(
"清先
选择基准
图片"
);
return
;
}
if
(
this
.
Project
==
null
)
{
Project
=
new
AoiProject
(
Img
);
Project
=
new
AoiProject
(
Base
Img
);
}
if
(
comType
.
Text
.
Equals
(
""
))
{
...
...
@@ -170,7 +182,7 @@ namespace AccAOI
CanSel
=
false
;
imageBox1
.
SelectNone
();
imageBox1
.
Image
=
Img
;
imageBox1
.
Image
=
Base
Img
;
CanSel
=
true
;
if
(
aoiControl
==
null
)
{
...
...
@@ -284,7 +296,7 @@ namespace AccAOI
{
return
;
}
if
(
imageBox1
.
Image
==
null
||
Img
==
null
||
aoiControl
==
null
)
if
(
imageBox1
.
Image
==
null
||
Base
Img
==
null
||
aoiControl
==
null
)
{
return
;
}
...
...
@@ -301,7 +313,7 @@ namespace AccAOI
{
SaveCurrAoi
();
CanSel
=
false
;
if
(
Img
==
null
)
if
(
Base
Img
==
null
)
{
return
;
}
...
...
@@ -309,19 +321,28 @@ namespace AccAOI
{
return
;
}
if
(
TestImage
==
null
)
{
MessageBox
.
Show
(
"请选择测试图片"
);
return
;
}
Image
outImage
=
null
;
List
<
ResultBean
>
result
=
Project
.
CheckAll
(
Img
,
out
outImage
);
List
<
ResultBean
>
result
=
Project
.
CheckAll
(
TestImage
,
out
outImage
);
if
(
outImage
!=
null
)
{
this
.
imageBox1
.
SelectNone
();
this
.
imageBox1
.
Image
=
outImage
;
if
(!
this
.
testImageBox1
.
Visible
)
{
btnImageChange_Click
(
null
,
null
);
}
this
.
testImageBox1
.
SelectNone
();
this
.
testImageBox1
.
Image
=
outImage
;
}
CanSel
=
true
;
}
private
void
btnDel_Click
(
object
sender
,
EventArgs
e
)
{
if
(
Img
==
null
)
if
(
Base
Img
==
null
)
{
return
;
}
...
...
@@ -342,6 +363,62 @@ namespace AccAOI
}
}
}
private
void
btnImageChange_Click
(
object
sender
,
EventArgs
e
)
{
if
(
testImageBox1
.
Visible
)
{
testImageBox1
.
Visible
=
false
;
imageBox1
.
Visible
=
true
;
btnImageChange
.
Text
=
"显示测试图片"
;
lblCurrImage
.
Text
=
"基准图:"
;
lblCurrImage
.
ForeColor
=
Color
.
Green
;
}
else
{
testImageBox1
.
Visible
=
true
;
imageBox1
.
Visible
=
false
;
btnImageChange
.
Text
=
"显示基准图片"
;
lblCurrImage
.
Text
=
"测试/效果图:"
;
lblCurrImage
.
ForeColor
=
Color
.
Orange
;
}
}
private
void
flatButton2_Click
(
object
sender
,
EventArgs
e
)
{
System
.
Windows
.
Forms
.
OpenFileDialog
openDialog
=
new
System
.
Windows
.
Forms
.
OpenFileDialog
();
openDialog
.
Title
=
"打开本地图片"
;
openDialog
.
Filter
=
"All Supported Images (*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png)|*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png|Bitmaps (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|Graphics Interchange Format (*.gif)|*.gif|Joint Photographic Experts (*.jpg)|*.jpg|Portable Network Graphics (*.png)|*.png|All Files (*.*)|*.*"
;
openDialog
.
DefaultExt
=
"png"
;
//openDialog.DefaultExt = "png";
System
.
Windows
.
Forms
.
DialogResult
result
=
openDialog
.
ShowDialog
();
if
(
result
==
System
.
Windows
.
Forms
.
DialogResult
.
Cancel
)
{
return
;
}
string
fileName
=
openDialog
.
FileName
;
//读取图片内容
TestImage
=
(
Image
)
Image
.
FromFile
(
fileName
).
Clone
();
testImageBox1
.
Image
=
TestImage
;
if
(
testImageBox1
.
Visible
.
Equals
(
false
))
{
btnImageChange_Click
(
null
,
null
);
}
}
private
void
FrmAoiSetting_Shown
(
object
sender
,
EventArgs
e
)
{
testImageBox1
.
Size
=
imageBox1
.
Size
;
testImageBox1
.
Location
=
imageBox1
.
Location
;
testImageBox1
.
Visible
=
false
;
}
private
void
flatButton1_Click
(
object
sender
,
EventArgs
e
)
{
}
}
}
AccAOI/control/ABaseControl.cs
查看文件 @
c00b734
...
...
@@ -27,7 +27,7 @@ namespace AccAOI.control
protected
object
UpdateLock
=
""
;
public
Image
GetImg
()
{
return
FrmAoiSetting
.
Img
;
return
FrmAoiSetting
.
Base
Img
;
}
internal
bool
IsShowOk
=
false
;
/// <summary>
...
...
AccAOI/control/AioMarkControl.cs
查看文件 @
c00b734
...
...
@@ -56,11 +56,11 @@ namespace AccAOI.control
}
if
(
checkImg
==
null
)
{
checkImg
=
FrmAoiSetting
.
Img
;
checkImg
=
FrmAoiSetting
.
Base
Img
;
}
DateTime
time
=
DateTime
.
Now
;
AoiMarkMethod
mark
=
(
AoiMarkMethod
)
AoiInfo
;
Image
result
=
mark
.
FixImage
(
FrmAoiSetting
.
Img
,
checkImg
);
Image
result
=
mark
.
FixImage
(
FrmAoiSetting
.
Base
Img
,
checkImg
);
TimeSpan
span
=
DateTime
.
Now
-
time
;
if
(
result
==
null
)
{
...
...
AccAOI/control/AioTempMatchControl.cs
查看文件 @
c00b734
...
...
@@ -55,11 +55,11 @@ namespace AccAOI.control
}
if
(
checkImg
==
null
)
{
checkImg
=
FrmAoiSetting
.
Img
;
checkImg
=
FrmAoiSetting
.
Base
Img
;
}
DateTime
time
=
DateTime
.
Now
;
AoiTemplateMethod
Match
=
(
AoiTemplateMethod
)
AoiInfo
;
ResultBean
result
=
Match
.
Check
(
FrmAoiSetting
.
Img
,
checkImg
);
ResultBean
result
=
Match
.
Check
(
FrmAoiSetting
.
Base
Img
,
checkImg
);
TimeSpan
span
=
DateTime
.
Now
-
time
;
if
(
result
==
null
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论