halcon学习笔记(二)实现相机物体提取

主要实现相机对抓取物体的单独提取功能

第一步:连接相机并生成代码

打开halcon菜单栏的助手,选择打开新的Image Acquisition
halcon学习笔记(二)实现相机物体提取
点击连接,halcon会自动获取相机信息
halcon学习笔记(二)实现相机物体提取
选择连接,–>选择采集–>实时,此时,窗口便会显示相机实时采集到的信息
halcon学习笔记(二)实现相机物体提取
采集到合适的图片之后点击停止,选择参数
halcon学习笔记(二)实现相机物体提取
在这里可以修改图片的参数,之后再选择代码生成,选择异步采集,插入代码,在程序窗口中,代码已经生成
halcon学习笔记(二)实现相机物体提取

第二步:将采集的图片转为二值图片

调用算子rgb1_to_gray (Image, GrayImage)
单步调试得到二值图片
halcon学习笔记(二)实现相机物体提取

第三步:使用全局阈值分割图片

打开灰度直方图,并打开阈值
halcon学习笔记(二)实现相机物体提取
此时窗口变为:
halcon学习笔记(二)实现相机物体提取
移动直方图上的坐标,直到选中物体
halcon学习笔记(二)实现相机物体提取
提醒一下,使用全局阈值来分割图片必须满足目标与背景相差较大,如果相差较近,建议使用局部阈值或动态阈值。
然后点击插入代码
此时程序窗口中生成了threshold (GrayImage, Regions, 127, 255)参数会根据图片变化而变化

第四步:打散

由于分割之后所有选中的物体都被认为是一个整体,为提取单个物体,需要对其进行打散操作
调用算子connection (Regions, ConnectedRegions)并运行得到
halcon学习笔记(二)实现相机物体提取
此时选中的物体用其他颜色进行区别实现打散。

第五步:提取

打开特征直方图,注意要在程序运行到打散之后再打开
halcon学习笔记(二)实现相机物体提取
同样,选择分离的特征依据,这里以面积为例,选择颜色表示选中,这里颜色可以根据实际目标物体的情况判断,移动最小阈值轴(绿色)直到目标被选中(即仅有目标被填充为选中的颜色,这里是绿色),选择插入代码,此时程序窗口已插入:
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 40494, 100000)
此时便完成了全部提取物体的操作,下面可以对提取的物体做进一步操作,比如这里计算面积并获得坐标
area_center (SelectedRegions, Area, Row, Column)
得到
halcon学习笔记(二)实现相机物体提取
当然也可以显示信息,但在显示之前一定要先创建窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
然后再显示信息
disp_message (WindowHandle, '面积'+Area+'坐标'+Column, 'window', Row, Column, 'black', 'false')
**tips:**这里如果报错,可能是没有设置可视单步调试模式,选择可视化–>更新窗口–>单步模式–>总是
halcon学习笔记(二)实现相机物体提取
另外在每次重新运行程序前要先关闭否则可能报错,所以在endwhile后面要加一句
close_framegrabber (AcqHandle)
并在重新运行之前先运行一遍close语句(将运行光标绿箭头移到那一句点击运行即可)。

上一篇:halcon read_ocr_trainf 从文件中读取训练字符并转换为图像


下一篇:Halcon系列教程之【频域】