本帖最后由 halcon2016 于 2024-7-26 14:00 编辑
如果你想彻底理解原理和推导过程,需要一些矩阵运算的知识,halcon里面有对应的算子。本文主要用到了矩阵相乘和矩阵求逆两个算子

文中像上面这样的计算可以看成是两个矩阵相乘即:
halcon里面对应的算子实现过程为:- *假设
- x0:=100
- y0:=100
- c0:=rad(10)
- XT:=200
- YT:=200
- CT:=rad(10)
- m1[0] := cos(c0)
- m1[1] := -sin(c0)
- m1[2] := x0
- m1[3] := sin(c0)
- m1[4] := cos(c0)
- m1[5] := y0
- m1[6] := 0
- m1[7] := 0
- m1[8] := 1
- create_matrix(3, 3, m1, m1_ID)
- m2[0] := cos(CT)
- m2[1] := -sin(CT)
- m2[2] := XT
- m2[3] := sin(CT)
- m2[4] := cos(CT)
- m2[5] := YT
- m2[6] := 0
- m2[7] := 0
- m2[8] := 1
- create_matrix(3, 3, m2, m2_ID)
- mult_matrix (m1_ID, m2_ID, 'AB', MatrixMultID)
- get_full_matrix (MatrixMultID, Values)
- XF := Values[2]
- YF := Values[5]
- CF := atan2(Values[3], Values[0])
复制代码

另外文中像上面这种形式的表示矩阵求逆,halcon对应实现为:- u1:=100
- v1:=100
- c1:=0
- m1[0] := cos(c1)
- m1[1] := -sin(c1)
- m1[2] := u1
- m1[3] := sin(c1)
- m1[4] := cos(c1)
- m1[5] := v1
- m1[6] := 0
- m1[7] := 0
- m1[8] := 1
- create_matrix(3, 3, m1, m1_ID)
- invert_matrix (m1_ID, 'general', 0, MatrixInvID)
复制代码 |