直线(1,5)水平角度
直线(5,1)水平角度
上面的两幅图像分别是直线(1,5)和直线(5,1)两条直线的水平角度。可以看到,选择(1,5)和选择(5,1)时,方向刚好是相反的,所以这条直线的水平角度也刚好是相反的,相差了180度。
求角度时,还覆盖了角度的弧线。但是,如上面的图中,270度时的覆盖弧线并不准确,仍然只覆盖了90度左右,并没有覆盖270度的范围。这里是有Bug的,将上面的脚本导出到VI中,来研究一下:
水平角度导出为VI
导出vi后可以看到,这里的求夹角使用IVA Caliper Sub-VI 3.vi函数,并没有直接使用NI VDM中的IMAQ Get Angles获取角度函数。运行该vi后,查看效果,其实并没有覆盖角度的弧线:
未覆盖角度的弧线
视觉助手中的覆盖,没有VBAI中那么理想。除了底层函数可使用的覆盖(如查找直边的结果、搜索线、边缘点等)之外,其他的很多步骤生成vi后,都是不会覆盖结果的。所以,这里是无法查找为什么覆盖270度时的效果不正常。这个问题在VBAI中也同样存在,VBAI导出的VI则可以包含覆盖结果。这时就可以验证是哪里出问题了:Overlay Angle覆盖角度中的表达式有问题。具体的可以查看机器视觉论坛的主题:VBAI角度计算时向量2为270度时覆盖的弧线不正确http://visionbbs.com/thread-24994-1-1.html。
如果想要在LabVIEW中覆盖角度的弧线,请参考作者另一教程《LabVIEW Vision函数实例详解》中的“3.7.30 覆盖扩展之Overlay Angle覆盖角度”章节内容http://visionbbs.com/thread-14658-1-1.html。