工控编程吧

标题: 6.3 halcon二维测量标定实现 [打印本页]

作者: qq263946146    时间: 2019-3-31 11:20
标题: 6.3 halcon二维测量标定实现
二维测量中我们通常要经过 相应图像处理后得到物体成像后的像素大小,
包括距离 ,周长 ,面积等。
要想知道实际 二维物体尺寸就要进行标定。
其实就是确定 每个像素 代表实际 尺寸是多少。
所以我们需要拿一个已知尺寸的物体进行成像,然后用实际 尺寸除以像素 尺寸,
就可以得到每个像素 代表的物理尺寸了,要注意的是这种方式合适 垂直于光轴的物体成像。

下面是halcon二维标定的实现代码,可做参考。
  1. dev_close_window ()
  2. dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
  3. *用鼠标在halcon图像窗口中绘制一条直线,Row1, Column1, Row2, Column2为直线的两端点坐标。
  4. draw_line (WindowHandle, Row1, Column1, Row2, Column2)
  5. *假设我们画出的线段实际长度是600mm,则下面求得的结果就表示每个像素代码和实际长度,
  6. *可用于后续实际 的二维 测量。
  7. *(Row2-Row1)*(Row2-Row1)+(Column2-Column1)*(Column2-Column1)求出的是两点实际 欧式距离。
  8. *是按定理求得,也就是纵坐标差和横坐标差的平方和和平方根,求得结果后用实际距离600除以它就可以求出
  9. *每像素代表的物理尺寸。例如后面求得一直线长度10像素,则其实际长度为10*Scale;
  10. Scale := 600/sqrt( (Row2-Row1)*(Row2-Row1)+(Column2-Column1)*(Column2-Column1) )
  11. *下面求得我们所画直线的面积和周长,单位像素。
  12. gen_region_line (RegionLines, Row1, Column1, Row2, Column2)
  13. area_center (RegionLines, Area, Row, Column)
  14. contlength (RegionLines, ContLength)
  15. *通过像素*毫米/像素公式,求得线段实际面积与周长。
  16. RealArea := Area*Scale
  17. RealContLength := ContLength*Scale
复制代码







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4