halcon的方向问题

首先是线的方向是从左下到右上,与水平线夹角,所以角度范围是-Π/2到Π/2。

实例:

point1:=[100,100]
point2:=[200,200]

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_color ('yellow')
dev_set_line_width (3)
set_tposition (WindowHandle, 0, 0)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')


disp_arrow (WindowHandle, point1[0], point1[1], point2[0], point2[1], 1)
line_orientation (point1[0], point1[1], point2[0], point2[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)

dev_clear_window ()
disp_arrow (WindowHandle, point2[0], point2[1],point1[0], point1[1],  1)
line_orientation (point2[0], point2[1],point1[0], point1[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)


point3:=[100,300]
point4:=[200,200]
dev_clear_window ()
disp_arrow (WindowHandle, point3[0], point3[1], point4[0], point4[1], 1)
line_orientation (point3[0], point3[1], point4[0], point4[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)

dev_clear_window ()
disp_arrow (WindowHandle, point4[0], point4[1], point3[0], point3[1], 1)
line_orientation (point4[0], point4[1], point3[0], point3[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)

运行结果:

可以看到,角度与方向无关。


还有一个就是区域的角度,要求区域的角度,系统会先计算出区域的等效椭圆,椭圆的长轴与水平方向的夹角就是这个区域的角度。角度的范围是-Π到Π。

那么问题来了,-Π到Π合起来就是360度了,那么怎么确定角度是45度,还是-135度(假设)?那样就涉及到方向问题了,如果等效椭圆的长轴方向终点在水平轴下面,那么角度就是逆时针来计算;而如果终点在水平轴上面,那么角度就是按照顺时针计算。

实例

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_color ('yellow')
dev_set_line_width (3)
set_tposition (WindowHandle, 0, 0)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')

dev_clear_window ()
draw_rectangle2 (WindowHandle, Row, Column, Phi1, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi1, Length1, Length2)
degree1:=deg(Phi1)
write_string (WindowHandle, '角度为:'+degree1)

首先画一个从左下到右上方向的带角度矩形。

运算结果:

然后再画一个从右上到左下的矩形。

运行结果:

Halcon是一个专业的机器视觉软件,提供了丰富的图像处理和分析功能,包括对图像中对象的方向角度的检测和显示。在Halcon中显示方向角度通常涉及以下步骤: 1. 图像预处理:对图像进行必要的预处理操作,如灰度化、二值化、滤波等,以便于后续处理。 2. 边缘检测:通过边缘检测算子(如Sobel算子、Canny算子等)获取图像中物体的边缘信息。 3. 物体检测:利用轮廓检测、区域生长等方法,从图像中提取出感兴趣的物体区域。 4. 物体定向:使用Halcon的拟合函数,如`fit_ellipse`、`fit_primitives`等,根据物体轮廓计算出拟合的几何元素(如椭圆、直线、矩形等),并获取其方向信息。 5. 角度显示:获取到物体的方向后,可以通过Halcon的文本显示函数,如`gen_cross_contour_xld`生成十字标记并用`dev_display`函数显示出来,将标记放置在图像上以直观展示物体的方向。 具体实现代码示例: ```halcon * 假设已经得到了物体的轮廓 Contour fit_ellipse (Contour, Row, Column, Phi, Length1, Length2, StartPhi, EndPhi, Sigma) * 从椭圆拟合结果中获取方向角度 Phi * 使用gen_cross_contour_xld生成十字标记 gen_cross_contour_xld (Cross, 10, 360) * 将十字标记平移到物体的中心位置 translate_contour_xld (Cross, -Row, -Column) rotate_contour_xld (Cross, Phi, CrossRotated) * 将旋转后的十字标记移动到图像上 translate_contour_xld (CrossRotated, Row, Column) * 在图像上显示方向标记 dev_display (CrossRotated) ``` 请注意,上述代码仅为示例,实际应用中需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值