第一步:生成
在相机视野里移动九个位置,分别抓取九个像素坐标。
机械坐标数组:
记录产品在视野中心的时候机械坐标为(0,0),另外八个位置的相对机械坐标。
这里的1只是演示,具体移动间隔根据视野大小合理设置。
像素坐标数组:
记录九个位置的像素坐标,直接记录就可以,不用取零点和做相对处理。
生成映射关系:
利用halcon中的算子:vector_to_hom_mat2d
该算子在C#中为:HHomMat2D对象的VectorToHomMat2d方法
经过记上方法,hom里面保存了仿射变换矩阵的信息;
可以使用halcon的 write_tuple算子保存此对象。
Tuple参数就是HHomMat2D对象;
不使用此算子的话可以保存两份数组数据到本地,需要时实时读取然后生成;
第二步:使用
在相机视野中检测到物体后,传入像素坐标信息,使用算子affine_trans_point_2d输出变换后的相对机械坐标:
假设这里相对机械坐标是(a,b);
也就是说在原来的机械坐标里,这个位置相对(0,0),x方向和y方向分别偏移了a和b;
相机视野中心对应的机械坐标是(0,0);
我们想要的是产品移动到视野中心,那就要x方向移动a,y方向移动b;