品牌做网站,网站返回按钮设计,巩义网站推广,网站开发工作前景1.打印标定纸#xff0c;随机九个点 2.让UR机器人末端分别走到P1-P9九个点
在图示位置读取九个点的X#xff0c;Y坐标 3.手机拍照#xff08;固定点#xff09;
测试可以随机拍一张#xff0c;实用的话需要固定手机的拍照位置#xff0c;得到的图片如下#xff1a; 4.…1.打印标定纸随机九个点 2.让UR机器人末端分别走到P1-P9九个点
在图示位置读取九个点的XY坐标 3.手机拍照固定点
测试可以随机拍一张实用的话需要固定手机的拍照位置得到的图片如下 4.OpenCV取值这九个点的像素坐标 实用如下代码显示这个图片用鼠标悬停取抄写坐标
import cv2
import numpy as npinput_img/home/cheni/Downloads/xyz.jpeg
image cv2.imread(input_img)
#让图片可以缩写拉伸
cv2.namedWindow(Harris, cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO)
cv2.imshow(Harris,image)if cv2.waitKey(0) 0xff 27:cv2.destroyAllWindows()
效果如下
鼠标悬停在P1上在左下角就可以读取这个像素坐标值了。 5.标定矩阵计算加验证
验证算法如下
import numpy as np
import cv2
robot_end_xynp.array([[-316,-611.4],[-359.7,-589.3],[-296.4,-573.2],[-372.3,-558.7],[-293.8,-530],[-343.4,-522.7],[-222.8,-510],[-329.6,-486.6],[-288.1,-472.4],
])
phone_image_xynp.array([[1371,923],[1912,965],[1367,1479],[1764,1423],[1555,1890],[2115,1702],[930,2490],[2150,2175],[1799,2520],])
#计算两组坐标之间的仿射矩阵
m, _ cv2.estimateAffine2D(phone_image_xy, robot_end_xy)
print (m)
def get_points_robot(x_camera, y_camera):robot_x (m[0][0] * x_camera) (m[0][1] * y_camera) m[0][2]robot_y (m[1][0] * x_camera) (m[1][1] * y_camera) m[1][2]return robot_x, robot_y
#验证其中一个点倒数第三个930,2490像素坐标转换机器人坐标
x,y get_points_robot(930,2490)
print(x,y)
运行后结果分析
cheniyuchen:~$ /bin/python3 /home/cheni/Desktop/suanfa.py
[[-7.71668805e-02 3.77840943e-02 -2.45046408e02][ 3.92542458e-02 7.59681698e-02 -7.35221624e02]]
-222.7292116274272 -509.55443216333356
cheniyuchen:~$ ^C
1是计算的仿射矩阵2是验证倒数第三个点可以看到误差不是太大。 6.参考文章 Python-opencv 手眼标定九点定位_opencv设置视觉抓取点怎么确定-CSDN博客
基于OpenCv的机器人手眼标定九点标定法《转载》_qt opencv 九点标定_hehedadaq的博客-CSDN博客