halcon实现瓶盖检测与定位代码:
dev_close_window()
dev_open_window(0, 0, 1024, 1024, 'black', WindowHandle)
list_image_files('C:/Users/TIMI/Desktop/picture/circle', 'default', [], ImageFiles)
for J := 1 to 4 by 1
*read image
read_image(halconImage, ImageFiles[J-1])
*read_image(halconImage,'C:/Users/TIMI/Desktop/srcImage/bord'+J$'01d'+'.png')
*find circle(这一部分是要封装的处理过程)
*1、三通道转化为单通道
decompose3(halconImage,RImage,GImage,BImage)
*2、二值化
threshold (RImage, Regions,0, 171)
*填充(目的是干嘛?)
dev_set_draw('margin')
fill_up(Regions, RegionFillUp)
*形态学处理
opening_circle(RegionFillUp, RegionOpening, 3.5)
*连通处理
connection(RegionOpening, ConnectedRegions)
*特征选择
select_shape (ConnectedRegions, SelectedRegions, ['area','circularity'], 'and', [110351,0.83981], [199445,1])
*区域中心
area_center(SelectedRegions, Area, Row, Column)
*显示中心
dev_set_color('red')
gen_cross_contour_xld(Cross, Row, Column, 16, 0.78)
*打印信息(这一部分是要封装的结果展示)
tuple_length(Row,RowLength)
* 有效值
if(RowLength==1 and Row!=0)
dev_set_draw('margin')
dev_clear_window()
dev_display(halconImage)
dev_set_line_width(1)
dev_set_color('green')
dev_display(Cross)
dev_set_line_width(3)
dev_set_color('green')
dev_display(SelectedRegions)
message[0]:=' The '+J +' in ' +4
message[1]:='Find board in position '+'Row:='+ Row +' Column:='+Column
disp_message(WindowHandle, message, 'window',10, 10, 'green', 'false')
else
message[0]:=' The '+J +' in ' +4
message[1]:='识别错误 error !'
disp_message(WindowHandle, message, 'window',130, 10, 'green', 'false')
endif
endfor
原始图片与图左;结果展示如图右。
------------------下边参照博客进行界面搭建。
https://blog.csdn.net/m0_37957160/article/details/119003705?spm=1001.2014.3001.5501
最终搭建的简单界面如下:
完整大QT界面搭建步骤:
1、添加库函数。包括include和lib的添加。
2、界面设计。
3、halcon的代码封装与导出。
4、图片显示在界面上。
5、构建一个类,存放图像处理的代码。
6、滚轮的放大与缩小
7、添加按钮,在图像上进行绘图操作。以及添加资源(即以一个图片作为按钮的背景。)
8、参数与界面进行关联。
9、管理参数。(一般使用结构体或者Qsetting)
第一步:QT工程建立。
第二步:各个模块类的添加。
在主窗口的.h内添加类的头文件,并定义一个指针指向类。
在主窗口的.cpp的构造函数内初始化指针。
第三步:ui界面设计。
第四步:绑定窗口。
第五步:各个button转到槽,添加变量,头文件内函数声明,源
完整大QT界面以及代码见链接:
https://download.csdn.net/download/m0_37957160/20464695