Python-opencv 手眼标定(九点定位)

这篇具有很好参考价值的文章主要介绍了Python-opencv 手眼标定(九点定位)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 Python-opencv 手眼标定(九点定位)

前言

本文主要解决相机像素坐标转换机械臂坐标的问题,用到的opencv版本为4.5.5.64


一、手眼定位原理?

以下可以参考

基于OpenCv的机器人手眼标定(九点标定法)

二、怎么实现

1.获得像素坐标和机械坐标集

主要思路就是将九点标定图放在机械臂获取范围内,得到九个圆心坐标(像素坐标和机械臂移动到圆心的坐标)

像素坐标的获取可以参考以下文章:

python opencv鼠标点击图像显示坐标值

机械坐标请自行解决  

2.取得坐标系转换的仿射矩阵

全部代码如下:

import numpy as np
import cv2

# 通过九点标定获取的圆心相机坐标
STC_points_camera = np.array([
            [207, 160],
            [311, 159],
            [415, 159],
            [206, 256],
            [311, 257],
            [416, 258],
            [205, 353],
            [311, 356],
            [416, 357],
])
# 通过九点标定获取的圆心机械臂坐标
STC_points_robot = np.array([
            [54, -74],
            [-4, -76],
            [-54, -77],
            [52, -32],
            [-4, -34],
            [-55, -35],
            [50, 11],
            [-4, 10],
            [-54, 8],
])


# 手眼标定方法
class HandInEyeCalibration:

    def get_m(self, points_camera, points_robot):
        """
        取得相机坐标转换到机器坐标的仿射矩阵
        :param points_camera:
        :param points_robot:
        :return:
        """
        # 确保两个点集的数量级不要差距过大,否则会输出None
        m, _ = cv2.estimateAffine2D(points_camera, points_robot)
        return m

    def get_points_robot(self, x_camera, y_camera):
        """
        相机坐标通过仿射矩阵变换取得机器坐标
        :param x_camera:
        :param y_camera:
        :return:
        """
        m = self.get_m(STC_points_camera, STC_points_robot)
        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

主要用到了opencv的estimateAffine2D函数,获得仿射变换矩阵

之后就可以用指定的像素坐标进行转换了,计算公式如下:

robot_x = (A * x_camera) + (B * y_camera) + C
robot_y = (D * x_camera) + (E * y_camera) + F

总结

以上就是今天要讲的内容,共同学习文章来源地址https://www.toymoban.com/news/detail-487168.html

到了这里,关于Python-opencv 手眼标定(九点定位)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-opencv实现目标检测定位:判断固定颜色物体是否在规定区域内

    主要实现实时检测视频或者摄像头中出现的固定颜色(本例中使用绿色)是否在规定的区域范围内,并将结果反馈到原视频上。 实现的效果如下图所示: 1、当绿色物体出现在屏幕中的黑框中时,在视频左上角反馈一个“True”的信息。 2、当绿色物体出现在屏幕中但没有完全

    2024年01月17日
    浏览(30)
  • 机器人手眼标定原理与python实现

    机器人手眼标定分为eye in hand与eye to hand两种。介绍之前进行变量定义说明: {b}: base基坐标系 {g}: gripper夹具坐标系 {t}: target标定板坐标系 {c}: camera相机坐标系 1、眼在手上(eye in hand) 眼在手上,相机固定在机器人上。 图1. eye in hand示意图 由以上两公式得: 经变换得: 可得:

    2024年02月02日
    浏览(28)
  • 机械臂进行手眼标定(眼在手上)python代码

    执行手眼标定(eye in hand)步骤: 收集数据:使用相机拍摄多张不同角度的标定板图像,并记录相机和机械臂的位姿数据。 提取标定板角点:使用OpenCV库中的函数cv2.findChessboardCorners()提取标定板图像中的角点坐标。 计算相机内参矩阵:使用OpenCV库中的函数cv2.calibrateCamera()计

    2024年02月16日
    浏览(29)
  • 将欧拉角转换为旋转矩阵(手眼标定)python版本

    1、欧拉角版 2、四元数版 3、旋转矩阵版本 4、齐次矩阵

    2024年02月16日
    浏览(32)
  • 机械臂手眼标定ZED相机——眼在手外python、matlab

    目录 1.眼在手外原理 2.附上眼在手外求得手眼矩阵的python代码 3.眼在手外标定步骤 1)打印棋盘格 2)得到hand数据 3)得到camera数据 4.运行python得到手眼矩阵   眼在手外所求的手眼矩阵是基坐标到相机的转换矩阵 其中:         hand为基坐标系下抓夹的位姿,一般从示教器

    2024年02月11日
    浏览(24)
  • (已修正精度 1mm左右)Realsense d435i深度相机+Aruco+棋盘格+OpenCV手眼标定全过程记录

    最近帮别人做了个手眼标定,然后我标定完了大概精度能到1mm左右。所以原文中误差10mm可能是当时那个臂本身的坐标系有问题。然后用的代码改成了基于python的,放在下面。 新来的小伙伴可以只参考前面的代码就可以完成标定了。 有问题的话可以留言,一起交流~ 手眼标定

    2024年02月04日
    浏览(32)
  • 机械臂手眼标定realsense d435相机——眼在手上python、matlab

    两周内看了好多博客,博客上的代码甚至github上的代码都试过了一遍,各种语言matlab、c++、python,了解到了许多做手眼标定的平台——halcon、ros(这俩还需要从头开始学,时间不太够用),最后看到了鱼香ros的博客,参考了一下并总结完整,附链接 此博客仅记录学习过程总结

    2024年02月15日
    浏览(36)
  • 手眼标定必备——旋转向量转换为旋转矩阵python——罗德里格斯公式Rodrigues

    在使用matlab工具箱对相机标定后,得到的旋转向量转换为旋转矩阵   参考旋转向量和旋转矩阵的互相转换(python cv2.Rodrigues()函数)_旋转向量转旋转矩阵_FC_code的博客-CSDN博客 p为输入的旋转向量cameraParams.RotationVectors 得到旋转矩阵cameraParams.RotationMatrices 结果为 转置之后,刚好

    2024年02月04日
    浏览(29)
  • 手机拍照转机器人末端坐标(九点标定法)

    在图示位置读取九个点的X,Y坐标 测试可以随机拍一张,实用的话需要固定手机的拍照位置,得到的图片如下:  实用如下代码显示这个图片,用鼠标悬停取抄写坐标 效果如下: 鼠标悬停在P1上,在左下角就可以读取这个像素坐标值了。 验证算法如下: 运行后结果分析:

    2024年02月06日
    浏览(41)
  • 基于OpenCV的单目相机标定与三维定位

           相机是产生图像数据的硬件,广泛应用于消费电子、汽车、安防等领域。围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等。目前大火的自动驾驶中相机也是重要的硬件组成,如环视用鱼眼相机,adas用周视相机。    

    2024年02月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包