工控编程吧
标题:
6.3 halcon二维测量标定实现
[打印本页]
作者:
qq263946146
时间:
2019-3-31 11:20
标题:
6.3 halcon二维测量标定实现
二维测量中我们通常要经过 相应图像处理后得到物体成像后的像素大小,
包括距离 ,周长 ,面积等。
要想知道实际 二维物体尺寸就要进行标定。
其实就是确定 每个像素 代表实际 尺寸是多少。
所以我们需要拿一个已知尺寸的物体进行成像,然后用实际 尺寸除以像素 尺寸,
就可以得到每个像素 代表的物理尺寸了,要注意的是这种方式合适 垂直于光轴的物体成像。
下面是halcon二维标定的实现代码,可做参考。
dev_close_window ()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
*用鼠标在halcon图像窗口中绘制一条直线,Row1, Column1, Row2, Column2为直线的两端点坐标。
draw_line (WindowHandle, Row1, Column1, Row2, Column2)
*假设我们画出的线段实际长度是600mm,则下面求得的结果就表示每个像素代码和实际长度,
*可用于后续实际 的二维 测量。
*(Row2-Row1)*(Row2-Row1)+(Column2-Column1)*(Column2-Column1)求出的是两点实际 欧式距离。
*是按定理求得,也就是纵坐标差和横坐标差的平方和和平方根,求得结果后用实际距离600除以它就可以求出
*每像素代表的物理尺寸。例如后面求得一直线长度10像素,则其实际长度为10*Scale;
Scale := 600/sqrt( (Row2-Row1)*(Row2-Row1)+(Column2-Column1)*(Column2-Column1) )
*下面求得我们所画直线的面积和周长,单位像素。
gen_region_line (RegionLines, Row1, Column1, Row2, Column2)
area_center (RegionLines, Area, Row, Column)
contlength (RegionLines, ContLength)
*通过像素*毫米/像素公式,求得线段实际面积与周长。
RealArea := Area*Scale
RealContLength := ContLength*Scale
复制代码
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4