opencv undistort函数里面需要用的畸变系数矩阵的单位应该是什么呢？

1个回答

``````Mat cameraMatrix = Mat::eye(3, 3, CV_64F);
//内参矩阵, 就算复制代码，也不要用我的参数。摄像头都不一样...
cameraMatrix.at<double>(0, 0) = 2.075319928848340e+03;
cameraMatrix.at<double>(0, 1) = 0;
cameraMatrix.at<double>(0, 2) = 1.273350420020438e+03;
cameraMatrix.at<double>(1, 1) = 2.073416138777327e+03;
cameraMatrix.at<double>(1, 2) = 6.898818022397845e+02;
//畸变参数，不要用我的参数~
Mat distCoeffs = Mat::zeros(5, 1, CV_64F);
distCoeffs.at<double>(0, 0) = 0.005961692158170;
distCoeffs.at<double>(1, 0) = 0.014892085926656;
distCoeffs.at<double>(2, 0) = -0.007714274148788;
distCoeffs.at<double>(3, 0) = -0.010548832296675;
distCoeffs.at<double>(4, 0) = 0;
Mat view, rview, map1, map2;
Size imageSize;
imageSize = image.size();
initUndistortRectifyMap(cameraMatrix, distCoeffs, Mat(),
``````

getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, imageSize, 1, imageSize, 0),
imageSize, CV_16SC2, map1, map2);
remap(image, image, map1, map2, INTER_LINEAR);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Attempt1：undistortPoints

std::vector obj_corners(1);
obj_corners[0] = Point2d((double)input_center_point.x,(double)input_center_point.y);
std::vector scene_corners(1);
//obj_corners：输入
//scene_corners：输出
undistortPoints(obj_corners,scene_corners,cameraMatrix,distCoeffs);
1
2
3
4
5
6

11-24 23:03:38.971 9133-9410/? I/MyCV: scene_corners width is 0.034107
11-24 23:03:38.971 9133-9410/? I/MyCV: scene_corners height is 0.031944
1
2

//Focus_length： 焦距，分fx和fy的。看不懂的同学请从头学习内参矩阵或者考虑换个导师或者科研题目
//Principle_Point.x：主点坐标，也是内参矩阵的一部分，同上
//scene_corners[0]: 上面undistortPoints函数的输出
result_point.x = scene_corners[0].x*Focus_length.x+Principle_Point.x;
result_point.y = scene_corners[0].y*Focus_length.y+Principle_Point.y;
1
2
3
4
5

11-24 23:03:38.971 9133-9410/? I/MyCV: result width is 1344.132696
11-24 23:03:38.971 9133-9410/? I/MyCV: result height is 756.114362
1
2

attempt2：initUndistortRectifyMap（）的map

https://stackoverflow.com/questions/34265650/can-i-get-the-point-position-using-remap-in-opencv
https://stackoverflow.com/questions/22323410/opencvremap-how-to-remap-an-image-to-another-image-with-different-size

initUndistortRectifyMap(cameraMatrix, distCoeffs, Mat(),
getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, imageSize, 1, imageSize, 0),
imageSize, CV_16SC2, map1, map2);
1
2
3

map1.at(row,col)
map2.at(row,col)
1
2

map1.at(row,col）
map2.at(row,col)
1
2

11-24 23:03:37.687 9133-9426/? I/MyCV: map2 16UC1
1

map1.at(row,col）
map2.at(row,col)
1
2

结果还是不对。

qq_37675107 方便看一下 你畸变系数那四个量K1K2P1P1的单位是什么么？
9 个月之前 回复

Opencv中的两种去畸变函数
Opencv中的两种去畸变函数前言两者的不同inner和outer的来源结束语 前言 参考 https://www.cnblogs.com/riddick/p/6711263.html 我们知道目前opencv在标定完后得到相机内参及畸变系数，要么通过cv::undistort()直接得到去畸变的图像，要么通过cv::getOptimalNewCameraMatrix()得到新的矩阵，再通过cv:...
【OpenCV】摄像机标定+畸变校正

opencv 透视变换矫正图像畸变

opencv标定和畸变校正

OpenCV 标定和畸变校正
1.摄像机成像原理 成像的过程实质上是4个坐标系的转换。首先空间中的一点由 世界坐标系 转换到 摄像机坐标系 ，然后再将其投影到成像平面 ( 图像物理坐标系 ) ，最后再将成像平面上的数据转换到图像平面 ( 图像像素坐标系 ) 。   下文对4个坐标系的 变换做了详细的解释： http://blog.csdn.net/humanking7/article/details
opencv鱼眼镜头畸变矫正

opencv 反透视变换矫正畸变
###对该程序做如下说明： * 采用的是opencv3.X版本 * 针对不同的图片，需要自己手动修改阈值`g_threshVal, g_threshMax` * 程序是根据[`这一篇博客`](https://blog.csdn.net/rrrfff/article/details/77340641#commentBox)写的，只是自己调通了以后，给大家也分享下 * 因为是自动找点，所以在设置的不太合理的情况下，会出现很奇怪的现象，后果不堪设想。

MATLAB相机标定及OpenCV畸变校准
https://blog.csdn.net/u013498583/article/details/71404323 畸变参数，总共有五个，径向畸变3个（k1,k2,k3）和切向畸变2个(p1,p2)。 以及在OpenCV中的畸变系数的排列（这点一定要注意k1，k2，p1，p2，k3），千万不要以为k是连着的。 并且通过实验表明，三个参数的时候由于k3所对应的非线性较为剧烈。估计的不好，容易产生极...
opengl里面参数的单位是什么？不太懂
glFrustum(-1.0,1.0,-1.0,1.0,3.5,6.0);rn这样的，不是象素，好象也不是窗口大小，是什么啊rn
opencv initundistortrectifymap()函数，为什么是在相机坐标系下去畸变
[size=24px]最近在看张正友标定和畸变校正的的Opencv源代码， 求出畸变系数后利用initundistortrectifymap()函数和remap()函数进行畸变校正。但是有一点不明白的就是，在initundistortrectifymap()函数中，是先将图像坐标(u, v)转换摄像机坐标系，再到世界坐标（X, Y, Z），然后在转换到摄像机坐标系(x', y', 1)，在摄像机坐标系中利用畸变校正模型得到去畸变后的坐标(x'', y'', 1)，然后再转换到图像坐标系(u', v')，这是什么原理呢？求大神指导，如果能够详细的解释整个过程，更是感激不尽！！[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/5.gif][/img][/size]
mouse_event的中键滚动的值是什么单位呢？

htmlspecialchars( stripslashes(\$var))
XML里面需要用替代的符号
XML里面一些特殊符号要用特别的表示：  特殊字符   替代符号      &            &amp;           >            &gt;      "             &quot;      '              &apos; 但是我们可以用CDATA来写我们不想被编译的符号： 格式为 比如：=1]]>效果与 &gt;

OpenCV摄像头畸变标定生成xml文件
https://blog.csdn.net/Li_haiyu/article/details/82782400

#include<cv.h> #include<highgui.h>//#pragma comment(lib, "cv.lib") //#pragma comment(lib, "cxcore.lib") //#pragma comment(lib, "highgui.lib")int main() { CvPoint2D32f srcTri[4], dstTri[4]; CvMa

OpenCV 标定和畸变校正(2)

opencv鱼眼镜头畸变矫正2

opencv 普通相机畸变标定校正
opencv 普通相机畸变标定校正http://blog.csdn.net/qq_15947787/article/details/51471535
OpenCV编程->单目相机内参及畸变求解
/*------------------------------------------------------------------------------------------*\ This file contains material supporting chapter 9 of the cookbook: Computer Vision Programming usi
【opencv】鱼眼图像畸变校正——透视变换

OpenCV图像稀疏点去畸变undistortPoints()
OpenCV图像稀疏点去畸变undistortPoints 函数undistortPoints()
bps是什么单位？是什么意思
1M带宽的意思是1Mbps注意是bps而不是Bps！ 换算吧，1Bps=8bps； 所以1Mbps=128KBps； 所以下载速度最高为128KBps 1Mbps=1024KBps/8=128KBps 随便说说什么是bps bps是bits per second的缩写，表示比特/秒。那么客户下载一首5兆的MP3歌曲， 需要多长时间？这与下载速率有直接的关系。 以普通的ADSL为例（基
opencv迭代去畸变算法（含源码分析）

sql server里面类似于orcl里DECODE的函数是什么呢？
sql server里面类似于orcl里DECODE的函数是什么呢？

1、格式化日期型字段的函数，类似asp里面的formatdatetime()rnrn2、取出字符串里面左边多少个字符子串的函数，类似asp里面的left()rnrn3、替换字符串里面特定字符子串的函数，类似asp里面的replace()rnrn4、我不知道是jsp的原因还是oracle的原因，我在asp里面的用的很好的"select top 5 * from mytable order by iid desc"语句，居然会因为我加了"top 5"而报错说：未找到预期的from关键字，我的iid就是关键字的呀！rnrn以上4个问题每个20分，希望各位帮帮忙！谢谢！rnrn