54Halcon之平移九点标定
* 平移,九点标定
* 引导定位
* 将相机的图像坐标转换到轴移动的坐标
*** 需求 图像上的九个点坐标,和对应的轴在这9个点时的xy的位置
*** 1,图像九个点
PixelRow:= [1367,1364,1363,1386,1383,1381,1406,1403,1400]
PixelColumn := [2472,2490,2509,2473,2492,2512,2476,2496,2514]
*** 2.对应机械轴的九个点
RobotRow := [0.0,0.0,0.0,0.5,0.5,0.5,1.0,1.0,1.0]
RobotColumn :=[0.0,0.5,1.0,0.0,0.5,1.0,0.0,0.5,1.0]
*** 3.生成仿射变换矩阵(由这个矩阵,就是计算出图像上的位置时,就通过这个矩阵可以转换出机械轴移动位置)
vector_to_hom_mat2d (PixelRow, PixelColumn, RobotRow, RobotColumn, HomMat2D)
* 4.保存矩阵
write_tuple (HomMat2D, 'D:/九点标定矩阵.tup')
* 5.读取矩阵
read_tuple ('D:/九点标定矩阵.tup', HomMat2D2)
* 6 像素坐标转机械轴坐标
affine_trans_point_2d (HomMat2D, 1200, 3600, Qx, Qy)
PixelRow:= [1367,1364,1363,1386,1383,1381,1406,1403,1400]
PixelColumn := [2472,2490,2509,2473,2492,2512,2476,2496,2514]
RobotRow := [0.0,0.0,0.0,0.5,0.5,0.5,1.0,1.0,1.0]
RobotColumn :=[0.0,0.5,1.0,0.0,0.5,1.0,0.0,0.5,1.0]
** 构建仿射变换矩阵
vector_to_hom_mat2d (PixelRow, PixelColumn, RobotRow, RobotColumn, HomMat2D)
*保存矩阵
write_tuple (HomMat2D, '九点标定.tup')
*读取矩阵
read_tuple ('九点标定.tup', HomMat2D)
*利用求出来的物体行列坐标得到机器坐标
affine_trans_point_2d (HomMat2D, PixelRow, PixelColumn, Qx1, Qy1)
affine_trans_point_2d (HomMat2D, 1367, 2472, Qx1, Qy1)