少有人走的路

勇哥的工业自动化技术网站

Halcon计算一个点旋转指定角度并且偏移到指定位置

怎么让一个点按指定的角度旋转并且偏移到指定的位置上去呢?

这个其实就是旋转与偏移二合一矩阵的应用。

halcon的算子vector_angle_to_rigid配合affine_trans_pixel就是这个作用


如下图所示,勇哥希望两个极耳朵中间那个点按电池的角度旋转并且位置于电池本体的中心上去。

image.png


read_image(Image, 'C:/Users/Administrator/Desktop/1.bmp')
dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
disp_obj(Image, WindowHandle)
row1:=226
col1:=388
disp_circle(WindowHandle, row1, col1, 5)

r1:=78
c1:=147
r2:=72
c2:=340
disp_line(WindowHandle, r1, c1, r2, c2)
angle_lx(r1, c1, r2, c2, Angle)
tuple_deg(Angle, Deg1)


vector_angle_to_rigid(row1, col1, 0, row1, col1, Angle, HomMat2D)
affine_trans_pixel(HomMat2D, row1, col1-150, RowTrans, ColTrans)

angle_lx(RowTrans,ColTrans,row1, col1, Angle1)
tuple_deg(Angle1, Deg2)
disp_circle(WindowHandle,RowTrans, ColTrans, 5)

在上面的例子中,红线计算出电池本体的角度。

两极耳中心的点和旋转移位后本体中心的点之间的角度应该与电池本体的角度差不多。

在上面的代码中,也就是Angle与Angle1的角度应该差不多。



勇哥再举一个例子,你可以从中体会到算子vector_angle_to_rigid特有的好处。

read_image (Image, 'printer_chip/printer_chip_01')
draw_rectangle1 (200000, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
hom_mat2d_identity (HomMat2DIdentity)
*先将要转换region平移到原点位置
hom_mat2d_translate (HomMat2DIdentity, -Row1,-Column1,  HomMat2DTranslate)
affine_trans_region (Rectangle, RegionAffineTrans, HomMat2DTranslate, 'nearest_neighbor')
*之后对回到原点位的region再进行需要的平移
hom_mat2d_translate (HomMat2DTranslate, Row1+600, Column1, HomMat2DTranslate1)
affine_trans_region (RegionAffineTrans, RegionAffineTrans1, HomMat2DTranslate1, 'nearest_neighbor')
area_center (RegionAffineTrans1, Area, Row, Column)
 
 
 
*若使用vector_angle_to_rigid则只需要知道现在点以及要转到到的位置点既可以
*
vector_angle_to_rigid (Row1, Column1, 0, 600, 0, 0, HomMat2D)
affine_trans_region (Rectangle, RegionAffineTrans2, HomMat2D, 'nearest_neighbor')



对于这种点旋转的应用来说,勇哥写过许多例子。

并非一定要用halcon的算子来计算,请参考下面贴子:


三角函数在图形学里的应用(二) 点绕原点旋转(方法2)、点绕任意点旋转  

三角函数在图形学里的应用(一) 点绕原点旋转  

二维点的旋转(C#演示代码) 

二维点的旋转 续一(halcon演示代码) 

二维点的旋转 续二(Matlab演示代码) 

二维点的旋转 续三(C#演示代码) 

旋转变换(一)旋转矩阵  

坐标系旋转变换公式图解  


--------------------- 

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864