OpenCV 的 unactorPoints 是否也可以纠正它们?

2024-02-09

我试图通过使用带有两个摄像头的 OpenCV 2.3.1 来确定两个对象之间的距离,但无法计算对象的 objectPoints(OCV 2.3.1、MSVC++、Windows 7)。我认为这是因为在计算视差之前没有对图像点进行校正。

一、我首先要做的事情

步骤 1. 单独校准每个相机

int numSquares = numCornersHor * numCornersVer;
Size board_sz = Size(numCornersHor, numCornersVer);

Mat cameraMatrix = Mat(3, 3, CV_32FC1);
Mat distCoeffs;

vector<Mat> rvecs, tvecs;

cameraMatrix.ptr<float>(0)[0] = 1;
cameraMatrix.ptr<float>(1)[1] = 1;

calibrateCamera(object_points, 
       image_points, 
       image.size(), 
       cameraMatrix, distCoeffs, 
       rvecs, tvecs);

步骤 2. 一起校准相机

int numCornersHor = 4;
int numCornersVer = 3;
const float squareSize = 1.75;

Size imageSize = Size(numCornersHor, numCornersVer);
int numSquares = numCornersHor * numCornersVer;

for(int i = 0; i < pairs; i++ )
{
for( int j = 0; j < imageSize.height; j++ )
{
    for( int k = 0; k < imageSize.width; k++ )
    {
                    objectPoints[i].push_back(Point3f(j*squareSize, k*squareSize, 0));
    }
}
}

Mat R, T, E, F;

rms = stereoCalibrate(  objectPoints, 
                          imagePoints[0],   imagePoints[1],
        cameraMatrix[0],    distCoeffs[0],
        cameraMatrix[1],    distCoeffs[1],
        imageSize, 
        R,  T,  E,  F,
        TermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 100, 1e-5),
        CV_CALIB_FIX_ASPECT_RATIO +
        CV_CALIB_ZERO_TANGENT_DIST +
        CV_CALIB_SAME_FOCAL_LENGTH +
        CV_CALIB_RATIONAL_MODEL +
        CV_CALIB_FIX_K3 +   CV_CALIB_FIX_K4 +   CV_CALIB_FIX_K5
        );

步骤 3. 创建整改数据

  stereoRectify(
        cameraMatrix[0],    cameraMatrix[1], 
        distCoeffs[0],  distCoeffs[1],
                  imageSize, 
        R, T, 
        RC1, RC2,  //RC1: Rotation matrix Camera 1
        PC1, PC2, 
        Q,
            CALIB_ZERO_DISPARITY, 
        1,  
        imageSize);

二.我相信什么

目标: 我正在尝试对来自相机 1 的图像和来自相机 2 的图像中的一个对象的图像点进行反扭曲和校正(我执行此过程两次:一次是在粘土鸽子位于发射器上时,一次是在粘土鸽子解体前的一帧)

方法: 我相信我不需要先使用 initUn DistorifyMap 然后再使用 Remap,而可以只使用 un DistorPoints。我认为 unactorPoints 可以消除兴趣点的扭曲并对其进行纠正。

三.我接下来做什么

如果我的信念不正确,你可以忽略这一点。

undistortPoints(launcherC1, launcherC1Undistorted, cameraMatrixC1, distCoeffsC1, R1, P1);   
undistortPoints(launcherC2, launcherC2Undistorted, cameraMatrixC2, distCoeffsC2, R2, P2);   

undistortPoints(clayPigeonC1, clayPigeonC1Undistorted, cameraMatrix1, distCoeffs1, R1, P1);
undistortPoints(clayPigeonC2, clayPigeonC2Undistorted, cameraMatrix2, distCoeffs2, R2, P2); 

unactorPoints(launcherC1、launcherC1Un Distored、...clayPigeonC2、clayPigeonC2Unactored)的输入和输出数组是 Point2f 对象的向量。

四.信念与现实之间的差异

运行所有 unactorPoints 函数后,

  1. launcherC1Undisorted.y 不等于 launcherC2Un Disorted.y
  2. clayPigeonC1Un Distorted.y 不等于clayPigeonC2Un Distorted.y。

它们的差异高达 30%。

五、问题

  1. Q1 除了不扭曲它们之外,unactorPoints 还可以纠正点吗?
  2. Q1.1_是的。校正后 y 的值是否应该相等?
  3. Q1.1.1_yes 你能从我包含的代码中看出我做错了什么,这样他们就不会这样做吗?
  4. Q1_no 如果 unactorPoints 没有纠正这些点,那么我该如何纠正它们?

  1. undistortPoints无法校正点,因为您从未为其提供校正所需的参数 - 这就是相机与其他相机的位姿关系。
  2. 当你以正确的方式进行纠正时,stereoCalibrate + initUndistortRectifyMap + remap,那么是的 - 相应点的 y 值将相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV 的 unactorPoints 是否也可以纠正它们? 的相关文章

  • 使用相位相关和对数极坐标变换获得旋转位移

    我一直在编写一个脚本 它使用 cv2 计算两个图像之间的旋转位移phaseCorrelate method 我有两张图像 第二张是第一张图像的 90 度旋转版本 加载图像后 我将它们转换为对数极坐标 然后将它们传递到phaseCorrela
  • 收据褪色部分可以恢复吗?

    我有一些包含一些扫描收据的文件 我需要使用 OCR 从中提取文本 由于收据上打印的文字在一段时间后会褪色 导致收据上的某些文字不清晰 影响OCR结果 褪色单词的一些示例 有什么方法可以恢复褪色的部分 以便提高 OCR 结果吗 我在OpenC
  • C++ OpenCV 2.3 中缺少 MoveWindow()

    我正在使用 OpenCV 2 3 的 C 版本 并且正在努力完成一项基本任务 我想做的是创建一个窗口并将其移动到屏幕上的特定位置 例如使用 cv namedWindow My Window 1 cv MoveWindow My Window
  • 在 Python 3.5 64 位上通过 pip 安装 OpenCV

    我尝试安装 OpenCV 但找不到任何合适的 pip 软件包 我决定上网查找有关如何安装它的官方文档 并发现this https opencv python tutroals readthedocs io en latest py tuto
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进
  • Opencv matchTemplate 和 np.where():仅保留唯一值

    继带有马里奥硬币的 opencv 教程 https opencv python tutroals readthedocs io en latest py tutorials py imgproc py template matching p
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 我可以使用 openCV 比较两张不同图像上的两张脸吗?

    我对 openCV 很陌生 我看到它可以计算出脸部并返回一个矩形来指示脸部 我想知道 openCV 是否可以访问两张包含一张脸的图像 并且我希望 openCV 返回这两个人是否相同的可能性 Thanks OpenCV 不提供完整的人脸识别引
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • OpenCV Visual Studio ntdll.dll

    我尝试在 Visual Studio 2013 上使用 OpenCV 2 4 10 创建一个项目 但由于以下异常 到目前为止我运气不佳 请建议帮助 TIA letstryitonemoretime exe Win32 Loaded C Us
  • ffmpeg AVFrame 到 opencv Mat 转换

    我目前正在开发一个使用 ffmpeg 解码接收到的帧的项目 解码后 我想将 AVFrame 转换为 opencv Mat 帧 以便我可以在 imShow 函数上播放它 我拥有的是字节流 我将其读入缓冲区 解码为 AVFrame f fope
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • 将 4 通道图像转换为 3 通道图像

    我正在使用 OpenCV 2 4 6 我正在尝试将 4 通道 RGB IplImage 转换为 4 通道 HSV 图像 下面是我的代码 给出错误 OpenCV 错误 未知函数断言失败 我认为 cvCvtColor 支持 3 通道图像 有没有
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是

随机推荐

  • 如何显示多个权限请求的权限理由?

    我正在使用 Android API 25 需要在应用程序中发出权限请求 有大量关于如何发出请求以及如何显示基本原理的代码示例 这个链接在这里 https github com googlesamples android RuntimePer
  • 项目是否必须创建为精灵套件,还是可以简单地添加框架?

    我正在退一步学习我正在制作的 2D 游戏的精灵套件 而不是使用 UIKit 在我读过的所有教程中 他们将新项目创建为 Sprite Kit 而不是单一视图 只是想知道我是否需要重新创建我的游戏 或者我是否可以简单地将精灵套件框架添加到我现有
  • 根据条件在多对多表中执行左连接

    一般案例 当您想要向关系的外部添加条件时 如何在多对多关系中执行左连接 具体案例 我们正在处理两个表 team and pool 还有一个team pool表充当它们之间的多对多联结表 另外 一个pool has a stage id co
  • 错误:函数返回局部变量的地址

    我是 C 初学者 正在自学 我正在创建以下函数 char foo int x if x lt 0 char a 1000 char b blah x x 1 char c foo x strcpy a b strcat a c return
  • 如何用docker文件覆盖nginx默认配置?

    我有一个使用 React router 的应用程序 我为它创建了一个 docker 镜像 我正在使用 nginx 服务器并且它可以工作 但是 刷新页面会出现 nginx 404 错误 我知道我需要覆盖 nginx 配置文件才能使其工作 但不
  • 如何在 C++ 正则表达式中使用 Unicode 范围

    我必须在 C 的正则表达式中使用 unicode 范围 基本上我需要的是有一个正则表达式来接受所有有效的 unicode 字符 我只是尝试使用测试表达式并面临一些问题 std regex reg u0080 uDB7Fa z0 9 问题是与
  • Django DDP 帮助

    对于这个问题我很抱歉我还不是 django 和meteorjs 的专家 我正在尝试使用此 django ddp 技术 但我有点陷入示例使用说明中的 启动 Django DDP 服务 https github com commoncode d
  • 未加权图的最短节点序列

    我想知道是否有一种算法可以通过从头节点到尾节点的图找到最短的节点序列 该图从头节点分支出来 并且是任意复杂的 并在尾节点处收敛 节点之间的所有连接都是未加权的 我正在考虑解决这个问题 从头节点和尾节点采取探索性步骤 直到图形两端的节点接触等
  • 使用 LESS mixin 多次设置变量但得到错误的结果

    在前面 我今天开始少了 因此 欢迎提出如何做得更好的建议 我有以下 less 文件 test target context em target context 1em custom field position relative test
  • Java 将文本字符串添加到 Rectangle2D

    我有一些矩形 给定一个声明并定义为的矩形 Rectangle2D rec new Rectangle2D Double 50 50 50 50 是否可以在该矩形内添加一串文本 谢谢 不要尝试将字符串放入预定义的矩形中 而是考虑使用FontM
  • 如何在同一部分文本上的 TextView 文本上设置多个跨度?

    假设我有下一个文本 你好堆栈溢出 我希望将第二个词设置为两者相对尺寸跨度 http developer android com reference android text style RelativeSizeSpan html 设置相对字
  • 在Android中如何实现这样的UI呢?

    在我的一个应用程序中 我需要为线性布局创建一个边框 如下所示 我不想有图像并将其设置为背景 因为那时我需要为不同的设备创建各种尺寸的图像 如果我使用线性布局创建布局并使用绝对定位放置文本视图 则它在不同设备中可能看起来不符合预期 那么实现这
  • Django复杂查询从groupby和having子句中获取数据

    我想在具有 CNT Status 的 MyUser 表上执行 group by 子句 原始查询如下所示 SELECT user id from user table GROUP BY user id HAVING COUNT status
  • 尝试运行 Docker 导致退出代码 127

    我正在尝试在使用 docker 的 Windows 中运行某个应用程序 由于该应用程序是 shell 脚本 因此我使用 cygwin 终端 作为 docker 的新手 我对其工作原理没有明确的想法 使用 boot2docker 我在 Win
  • C++ 中的“auto 运算符”是什么?

    Clang https en wikipedia org wiki Clang和 Visual Studio 编译器 但不是GCC https en wikipedia org wiki GNU Compiler Collection 允许
  • 应用模板上选择属性的 xslt 处理

    我有一个如下所示的 XSLT 并将该 xslt 应用于输入 xml 粘贴在下面 它工作正常 除了需要澄清的一件事 这是输入 xml
  • 这是 C# 4 中的协方差错误吗?

    在下面的代码中 我希望能够隐式转换elements to baseElements因为TBase可以隐式转换为IBase public interface IBase public interface IDerived IBase publ
  • 如何使用/绕过 Gmail 的 SMTP 出站发送限制?

    我正在使用我的 Gmail Apps for Domain 帐户在 Rails 应用程序中发送电子邮件以获取标准自动电子邮件 用户注册 忘记密码 通知管理员新评论等 但我担心每天设置的 500 封电子邮件限制由谷歌 谷歌建议克服该限制的一种
  • Python中的R函数rep()(复制列表/向量的元素)

    R 函数rep 复制向量的每个元素 gt rep c A B times 2 1 A B A B 这就像 Python 中的列表乘法 gt gt gt A B 2 A B A B 但使用rep R函数 还可以指定向量每个元素的重复次数 gt
  • OpenCV 的 unactorPoints 是否也可以纠正它们?

    我试图通过使用带有两个摄像头的 OpenCV 2 3 1 来确定两个对象之间的距离 但无法计算对象的 objectPoints OCV 2 3 1 MSVC Windows 7 我认为这是因为在计算视差之前没有对图像点进行校正 一 我首先要