2015-07-01 2 views
0

Я пытаюсь исказить изображение рыбий глаз, взятое с камеры. Я уже получил параметры камеры. Тем не менее, когда я запускаю код ниже:Утверждение Ошибка при использовании рыбий глаз unistortPoints

Mat cammatrix = cv::Mat::zeros(3,3, CV_64F); 
cammatrix.at<double>(0,0) = 3.7089418826568277e+002; 
cammatrix.at<double>(1,1) = 3.7179355652545451e+002; 
cammatrix.at<double>(0,2) = 3.4450520804288089e+002; 
cammatrix.at<double>(1,2) = 2.5859133287932718e+002; 
cammatrix.at<double>(2,2) = 1.0; 
std::vector<double> distortcoeff; 
double tempdoub = -2.2022994789941803e+000; 
distortcoeff.push_back(tempdoub); 
tempdoub = 4.4652133910671958e+000; 
distortcoeff.push_back(tempdoub); 
tempdoub = 6.8050071879644780e-001; 
distortcoeff.push_back(tempdoub); 
tempdoub = -1.7697153575434696e+000; 
distortcoeff.push_back(tempdoub); 

// Process images here (optional) 
    Mat img_scene (current); 

    if(!img_scene.data) 
    { std::cout<< " --(!) Error reading images " << std::endl; return -1; } 
    img_scene.convertTo(img_scene, CV_32FC2); 
    cv::fisheye::undistortPoints(img_scene, img_scene, cammatrix, distortcoeff); 

Я получаю эту ошибку:

OpenCV Error: Assertion failed (distorted.type() == CV_32FC2 || distorted.type() == CV_64FC2) in undistortPoints 

Не знаю, почему это происходит потому, что у меня есть .convertTo линии прямо перед преобразованием его в CV_32FC2. Если кто-то может помочь мне исправить эту ошибку, я бы очень признателен!

ответ

1

Функция undistortPoints() извлекает неискаженное местоположение пикселя, учитывая текущее искаженное местоположение на изображении. то есть он работает с точками, а не с изображениями. использование fisheye :: undistortImage для изображений.

 Смежные вопросы

  • Нет связанных вопросов^_^