opencv使用Halcon标定的相机内参和外参

由于opencv开源的性质,所以一些细节做的不好,在标定细节上面不够完善,因此Halcon标定的结果明显优于opencv等开源标定包。
这里存在一个问题,就是如何把Halcon标定的结果输入到opencv中或者大部分开源体系的相机包。
这里给出我的经验,有些也是蒙的,因为详细了解要推导矫正公式。
先上一张halcon标定结果图
在这里插入图片描述
来一张opencv的内参图
在这里插入图片描述其中焦距
opencv_fx = halcon_f / sx *1000
opencv_fy = halcon_f / sy *1000
举例 :
1866.53 = 4.10644 / 2.2 * 1000.0

其中畸变参数
opencv_k1 = halcon_kappa * halcon_f * halcon_f / 1000000;
举例:
-0.23265… = -13796.8 *

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
相机标定是用于确定相机内参外参的过程,它是计算机视觉和机器人视觉中的重要步骤。在Python中,我们可以使用OpenCV库来进行相机标定。 以下是相机标定的大致步骤: 1. 收集相机标定所需的图像数据,这些图像应该包括不同位置和角度下的棋盘格图像。 2. 使用OpenCV中的findChessboardCorners函数来检测每个棋盘格角点的位置。 3. 使用calibrateCamera函数来计算相机内参和畸变系数。该函数需要输入棋盘格图像的坐标和实际世界坐标。 4. 使用solvePnP函数来计算每个棋盘格图像的外参。该函数需要输入棋盘格图像的坐标和实际世界坐标。 下面是一个示例代码,用于标定相机并获取内参外参: ```python import cv2 import numpy as np # 收集相机标定所需的图像数据 images = [...] # 棋盘格图像列表 objpoints = [] # 实际世界坐标列表 imgpoints = [] # 图像坐标列表 # 设置棋盘格的大小 pattern_size = (9, 6) # 遍历每张图像 for img in images: # 寻找棋盘格的角点 ret, corners = cv2.findChessboardCorners(img, pattern_size, None) # 如果找到棋盘格 if ret == True: objpoints.append(...) # 将实际世界坐标添加到列表中 imgpoints.append(corners) # 将图像坐标添加到列表中 # 计算相机内参和畸变系数 ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img.shape[::-1], None, None) # 计算每张棋盘格图像的外参 rmatrices = [] for i in range(len(objpoints)): ret, rmat, tvec = cv2.solvePnP(objpoints[i], imgpoints[i], mtx, dist) rmatrices.append(rmat) ``` 在上面的代码中,我们首先使用findChessboardCorners函数来检测每张棋盘格图像中的角点位置,并将它们存储在imgpoints列表中。然后,我们构建一个实际世界坐标列表objpoints,该列表包含每个棋盘格的实际世界坐标。接下来,我们使用calibrateCamera函数计算相机内参和畸变系数。最后,我们使用solvePnP函数来计算每个棋盘格图像的外参,将结果存储在rmatrices列表中。 通过运行上面的代码,我们可以得到相机内参矩阵mtx和畸变系数dist,以及每个棋盘格图像的旋转矩阵rmatrices和平移向量tvecs。这些参数可以在后续的计算机视觉和机器人视觉应用中使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可峰科技

生活不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值