OpenCV应用相机失真-应用校准
OpenCV apply camera distortion - apply calibration
我有一个程序可以检测实时视频流中的对象。我想补偿相机中的失真,我使用了OpenCV校准工具,并生成了一个带有相关参数的XML文件。
然而,我不确定如何使用undistort
函数来应用它,据我所知,在捕捉每一帧时,都需要将其应用于每一帧?
void undistort(InputArray src, OutputArray dst, InputArray cameraMatrix, InputArray distCoeffs, InputArray newCameraMatrix=noArray() )
我很难识别这些参数中的每一个,以下是我目前的理解。
undistorted(currentFrame, resultsWindow, calibrationFile, notSure, notSure);
这个函数调用如下吗:
if(captureOpen == false){
img_scene = cvCaptureFromFile(videoFeed);
}
while(1) {
image = cvQueryFrame(img_scene);
undistort();
无失真(currentFrame,resultsWindow,calibrationFile,notSure,notSure);
不,那行不通。您需要事先手动读取XML文件,并用文件中的数据填充相应的参数。文件应包含相机矩阵(查找cx、cy、fx、fy值)和失真参数(k1、k2、k3、p1、p2等)。
2.4.x的无侵权文件如下:http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#undistort
典型地,src
是包含当前帧的Mat
。CCD_ 6是将用未失真图像填充的相同大小的输出CCD_。您必须将其转换回您喜欢的格式或在窗口中显示。cameraMatrix
是一个3x3的垫子,你已经装满了你的相机内部。CCD_ 9通常是包含失真系数的1x4或1x5 CCD_。(注意,p1和p2必须写在k2之后)。
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- c++r值引用应用于函数指针
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 旋转模型矩阵时的形状失真
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 有没有任务栏API可以立即应用注册表更改
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- OpenCV应用相机失真-应用校准