相关疑难解决方法(0)

Opencv:扭曲回来

我有cameraMatrixdistCoeff不需要的图像或点矢量.现在我想扭曲它们.

Opencv有可能吗?我记得我在stackoverflow中读到了一些关于它但现在找不到的东西.

编辑:我找到了在这个答案中做到这一点的方法.它也在opencv开发人员专区(本期)

但我的结果不正确.或多或少存在2-4像素的误差.可能我的代码有问题,因为在答案中我把单元测试中的一切看起来都很好.也许从浮动到双重的类型转换,或者我看不到的其他东西.

这是我的测试用例:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>

using namespace cv;
using namespace std;

void distortPoints(const std::vector<cv::Point2d> & src, std::vector<cv::Point2d> & dst,
                         const cv::Mat & cameraMatrix, const cv::Mat & distorsionMatrix)
{

  dst.clear();
  double fx = cameraMatrix.at<double>(0,0);
  double fy = cameraMatrix.at<double>(1,1);
  double ux = cameraMatrix.at<double>(0,2);
  double uy = cameraMatrix.at<double>(1,2);

  double k1 = distorsionMatrix.at<double>(0, 0);
  double k2 = distorsionMatrix.at<double>(0, 1);
  double p1 = distorsionMatrix.at<double>(0, 2);
  double p2 = distorsionMatrix.at<double>(0, 3);
  double …
Run Code Online (Sandbox Code Playgroud)

opencv distortion

6
推荐指数
2
解决办法
1万
查看次数

OpenCv StereoRectify中矩阵的精确定义

通常,投影矩阵P的定义是3x4矩阵,其将点从世界坐标投影到图像/像素坐标.投影矩阵可以分为:

  • K:具有内在参数的3x4相机矩阵K.
  • T:具有外部参数的4×4变换矩阵

投影矩阵是则P = ķ*Ť.

OpenCV的stereoRectify的以下输入有哪些明确的定义:

  • cameraMatrix1 - 第一个相机矩阵(我假设它是投影矩阵的内在K部分,对吗?).
  • R - 第一和第二摄像机的坐标系之间的旋转矩阵.('之间'是什么意思?是从cam1到cam2还是从cam2到cam1的旋转?)
  • T - 摄像机坐标系之间的平移向量.(同上面.是从cam1 - > cam2或cam2-> cam1的平移)
  • R1 - 为第一台摄像机输出3x3整流变换(旋转矩阵).(这是整流后的旋转,因此投影矩阵的新外部部分变为T1new = R1*T1old?)
  • P1 - 在第一台摄像机的新(整流)坐标系中输出3x4投影矩阵.("新坐标系中的投影矩阵"是什么意思?看来这个投影矩阵依赖于旋转矩阵R1来投影从世界坐标到图像/像素坐标的点,所以从上面的定义来看它既不是'投影矩阵'或'相机矩阵'但两者的某种混合物)

opencv transformation projection matrix

6
推荐指数
1
解决办法
3250
查看次数

标签 统计

opencv ×2

distortion ×1

matrix ×1

projection ×1

transformation ×1