Почему неискаженное изображение с рыбьим глазом?

Я использовал пример кода калибровки камеры из OpenCV для калибровки камеры. Затем хотел исправить искажения на некоторых изображениях. Я использовал этот код для удаления искажений. Это работает, но рыбий глаз все еще остается. Как получить изображение после устранения искажений без «рыбьего глаза»? Входное изображение без «рыбий глаз».

Вот код:

#include <opencv\cxcore.h>
#include <opencv2/calib3d.hpp>
#include <conio.h>
#include<math.h>
#include<windows.h>
#include <fstream>
#include<vector>
#include <stdlib.h>
#include<dirent.h>
#include<string.h>
#include <algorithm> // for std::copy

using namespace std;
using namespace cv;

int main(){
Mat src, gray;
//remove distortion in the image (after calibration)
Mat undistorted;
//Size1280x720;
Size imageSize(1280,720);
cv::Mat image=imread("C:/Test/4.png");
Mat view, rview, map1, map2;
Mat cameraMatrix = (Mat1d(3, 3) <<  8.5033354550764898e+002, 0, 640, 0, 8.5033354550764898e+002, 360, 0, 0, 1);
Mat distCoeffs = (Mat1d(1, 5) << -0.3, 2.8770882755049054e-001, 0, 0, -1.4405356460809188e-001);
initUndistortRectifyMap(
cameraMatrix, distCoeffs, Mat(),
getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, imageSize, 1, imageSize, 0), imageSize,
CV_16SC2, map1, map2);
// apply mapping functions
cv::remap(image, undistorted, map1, map2, INTER_LINEAR); // interpolation type
imshow("gg",undistorted);
while(uchar(waitKey(1))!='Q');
return 0;
}

Любая помощь? Спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector