机器视觉——找到物块中心点

首先先介绍一下我用的是HALCON中的HDevelop软件。

大家下载好软件后可以测试一下:

在程序编辑器窗口中输入下面指令:

read_image(Image,'monkey')

那么如果出现这样的图片,说明是没有问题的

那么本次编程采用的是下面这张图片

我们要达到的效果是这样的

其实代码很简单,我不过多说明

*读图
*以相对路径方式
*这里的代码叫算子
read_image(Image,'./img/1')
*通道分解  将多通道原图分解成RGB单通道灰度图像
*灰度值范围:0-255  灰度值越大,像素点越亮;反之,则越暗
decompose3(Image,R,G,B)

*阈值分割  阈值:灰度值区间【44, 255】
*对R通道图像上的所有像素点灰度值进行判断
*只要灰度值区间在【44, 255】内的像素点,就会被激活区域
*最终所有找出来的区域,都被放在区域Regions
*操作对象:图像R(有像素点)-》Regions(无像素点)
*颜色不是区域的特征
threshold (R, Regions, 44, 255)

*上一步由阈值分割得到的区域,其连通性为一个整体
*连通域打散(破坏连通性)
connection(Regions,ConnectedRegions)
*特征筛选(利用面积特征对ConnectedRegions进行筛选得到目标区域)
*目标区域也称感兴趣区域(ROI)
*ROI:Region of interesting
select_shape(ConnectedRegions,SelectedRegions,\
             'area','and',170000,180000)

*填充ROI上的孔洞
fill_up(SelectedRegions,RegionFillUp)
*获取填充后的目标区域的中心点行列坐标
area_center(RegionFillUp,Area,Row,Column)
*利用上一步获得的行列坐标值,绘制中心十字(亚像素轮廓)
*中心十字80:像素值  Π/4=0.785398,旋转45度
gen_cross_contour_xld(Cross,Row,Column,80,0)

**可视化**
*清空窗口
dev_clear_window()
*展示原图
dev_display(Image)
*对区域以及亚像素轮廓进行显示的预设值
*1、设置显示的颜色
dev_set_color('green')
*2、设置线宽
dev_set_line_width(5)
*3、设置区域显示为“仅轮廓”显示
dev_set_draw('margin')

*展示亚像素轮廓(中心十字)
dev_display(Cross)
*展示目标区域
dev_display(RegionFillUp)
*设置字体
*3600:窗口句柄
set_display_font(3600, 16, '楷体', 'true', 'false')

*展示文字信息
*disp_message(3600, '中心点坐标:('+Row+','+Column+')',\
             'image', 0, 0, 'red', 'true')
disp_message(3600, '中心点坐标:('+Row+','+Column+')',\
             'image', Row, Column, 'red', 'true')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值