Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
AccAOI
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b4bf8113
由
SK
编写于
2019-06-19 15:04:14 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
执行时传大图,返回切割后的小图
1 个父辈
3324a83b
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
33 行增加
和
21 行删除
AOI/blob/AoiBlobMethod.cs
AOI/rgb/AoiMethodRgb.cs
AccAOI/control/AoiRgbControl.cs
AOI/blob/AoiBlobMethod.cs
查看文件 @
b4bf811
...
...
@@ -48,10 +48,10 @@ namespace AOI
Image
standardRoiImg
=
GetRoiImage
(
standardImage
,
needCut
);
resultBean
.
standardRoiImage
=
standardRoiImg
;
Image
currentRoiImg
=
GetRoiImage
(
imageToCheck
,
needCut
);
resultBean
.
currentRoiImage
=
currentRoiImg
;
Image
cutImg
;
int
num
=
GetBlobNum
(
currentRoiImg
,
out
Image
dstImg
,
out
List
<
CvBlob
>
blobList
);
int
num
=
GetBlobNum
(
imageToCheck
,
out
cutImg
,
out
Image
dstImg
,
out
List
<
CvBlob
>
blobList
);
resultBean
.
currentRoiImage
=
cutImg
;
bool
result
=
false
;
if
(
num
>
minNum
)
{
...
...
@@ -71,13 +71,17 @@ namespace AOI
/// <summary>
/// 对源图像进行二值化,找出所有Blob后,根据minArea和maxArea过滤Blob后的数量
/// </summary>
/// <param name="srcImg">原始图片</param>
/// <param name="dstImg">二值化后的图片</param>
/// <param name="img">相机获取的大图</param>
/// <param name="cutImg">从大图中切割后的原图</param>
/// <param name="dstCutImg">切割并处理后的图片</param>
/// <param name="blobList">所有的Blob</param>
/// <returns>过滤后的Blob数量</returns>
public
int
GetBlobNum
(
Image
srcImg
,
out
Image
ds
tImg
,
out
List
<
CvBlob
>
blobList
)
public
int
GetBlobNum
(
Image
srcImg
,
out
Image
cutImg
,
out
Image
dstCu
tImg
,
out
List
<
CvBlob
>
blobList
)
{
Mat
srcMat
=
ImageUtil
.
ToMat
(
srcImg
);
bool
needCut
=
true
;
cutImg
=
GetRoiImage
(
srcImg
,
needCut
);
Mat
srcMat
=
ImageUtil
.
ToMat
(
cutImg
);
Mat
threshMat
=
new
Mat
();
Cv2
.
CvtColor
(
srcMat
,
threshMat
,
ColorConversionCodes
.
RGB2GRAY
);
ThresholdTypes
threshType
=
ThresholdTypes
.
Binary
;
...
...
@@ -96,7 +100,7 @@ namespace AOI
CvBlobs
blobs
=
new
CvBlobs
();
blobs
.
Label
(
threshMat
);
blobList
=
blobs
.
Values
.
ToList
();
dstImg
=
ImageUtil
.
ToImage
(
threshMat
);
dst
Cut
Img
=
ImageUtil
.
ToImage
(
threshMat
);
List
<
CvBlob
>
resultBlobs
=
blobList
.
Where
(
b
=>
{
if
(
b
.
Area
>
minArea
)
{
...
...
AOI/rgb/AoiMethodRgb.cs
查看文件 @
b4bf811
...
...
@@ -35,9 +35,9 @@ namespace AOI
Image
standardRoiImg
=
GetRoiImage
(
standardImage
,
needCut
);
resultBean
.
standardRoiImage
=
standardRoiImg
;
Image
cu
rrentRoiImg
=
GetRoiImage
(
imageToCheck
,
needCut
)
;
resultBean
.
currentRoiImage
=
currentRoiImg
;
float
rate
=
GetRate
(
currentRoiImg
,
out
Image
dstImg
)
;
Image
cu
tImg
;
float
rate
=
GetRate
(
imageToCheck
,
out
cutImg
,
out
Image
dstImage
)
;
resultBean
.
currentRoiImage
=
cutImg
;
bool
result
=
false
;
if
(
rate
>=
minRate
&&
rate
<=
maxRate
)
...
...
@@ -48,15 +48,22 @@ namespace AOI
return
resultBean
;
}
public
float
GetRate
(
Image
img
,
out
Image
dstImg
)
/// <summary>
/// 获取像素占比
/// </summary>
/// <param name="img">相机获取的大图</param>
/// <param name="cutImg">从大图中切割后的原图</param>
/// <param name="dstCutImg">切割并处理后的图片</param>
/// <returns></returns>
public
float
GetRate
(
Image
img
,
out
Image
cutImg
,
out
Image
dstCutImg
)
{
float
percent
=
0
;
dstImg
=
null
;
dst
Cut
Img
=
null
;
bool
needCut
=
true
;
Image
currentRoi
Img
=
GetRoiImage
(
img
,
needCut
);
if
(
cu
rrentRoi
Img
!=
null
)
cut
Img
=
GetRoiImage
(
img
,
needCut
);
if
(
cu
t
Img
!=
null
)
{
Mat
originalRoiMat
=
ImageUtil
.
ToMat
(
cu
rrentRoi
Img
);
Mat
originalRoiMat
=
ImageUtil
.
ToMat
(
cu
t
Img
);
Mat
roiMat
=
new
Mat
();
Cv2
.
CvtColor
(
originalRoiMat
,
roiMat
,
ColorConversionCodes
.
BGRA2BGR
);
...
...
@@ -69,8 +76,8 @@ namespace AOI
Scalar
maxScalar
=
Scalar
.
FromRgb
(
maxR
,
maxG
,
maxB
);
Cv2
.
InRange
(
roiMat
,
minScalar
,
maxScalar
,
dst
);
int
count
=
Cv2
.
CountNonZero
(
dst
);
originalR
oiMat
.
CopyTo
(
dst
,
dst
);
dstImg
=
ImageUtil
.
ToImage
(
dst
);
r
oiMat
.
CopyTo
(
dst
,
dst
);
dst
Cut
Img
=
ImageUtil
.
ToImage
(
dst
);
//计算总像素
minScalar
=
Scalar
.
FromRgb
(
1
,
1
,
1
);
...
...
AccAOI/control/AoiRgbControl.cs
查看文件 @
b4bf811
...
...
@@ -62,11 +62,12 @@ namespace AccAOI.control
private
void
UpdateImage
()
{
GetAoiInfo
();
Image
outImage
=
null
;
float
rate
=
methodRgb
.
GetRate
(
BaseImage
,
out
outImage
);
Image
cutImg
=
null
;
Image
dstCutImg
=
null
;
float
rate
=
methodRgb
.
GetRate
(
BaseImage
,
out
cutImg
,
out
dstCutImg
);
txtRate
.
Text
=
rate
.
ToString
();
this
.
aoiImage
.
Image
=
outImage
;
this
.
aoiImage
.
Image
=
cutImg
;
}
private
void
btnUpdate_Click
(
object
sender
,
EventArgs
e
)
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论