저는 현재 360 ° 카메라로 놀고 있는데 OpenCV의 구형 왜곡기를 사용하고 싶습니다. 그러나 stitcher 기능을 사용하는 간단한 프로그램을 실행할 때마다 스티칭 된 이미지가 반환되지 않습니다. 저는 기본적으로 360도 사진을 찍어서 두 개의 개별 사진 (앞면과 뒷면 렌즈)으로 나누고 함께 다시 스티치하고 싶습니다.OpenCV (C++) stitcher가 OutputArray에 쓰지 않습니다.
Mat srcImage = imread("assets/360_0043.JPG");
Mat frontLensImage(srcImage, Rect(0, 0, srcImage.cols/2, srcImage.rows));
Mat rearLensImage(srcImage, Rect(srcImage.rows, 0, srcImage.cols/2, srcImage.rows));
vector<Mat> imagesToStitch;
imagesToStitch.push_back(frontLensImage);
imagesToStitch.push_back(rearLensImage);
Mat panorama;
Stitcher stitcher = Stitcher::createDefault();
if(!imagesToStitch.empty()){
stitcher.stitch(imagesToStitch, panorama);
imshow("test", panorama);
waitKey(0);
}
else{
cout << "ERROR: Image array empty" << endl;
}
return 0;
실행하려고, 그것은이 오류를 반환 : 여기
코드의OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/imgwarp.cpp, line 1834
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/imgwarp.cpp:1834: error: (-215) ssize.area() > 0 in function resize
디버깅, panorama
내가 OutputArray
stitcher.stitch
에로 전달에도 불구하고 빈 개체입니다 . 나는 철저하게 웹을 검색했기 때문에 해결책을 찾지 못했습니다. 그래서 어떤 도움이라도 대단히 감사하겠습니다!
다음과 같아야합니다 :'Mat rearLensImage (srcImage, Rect (srcImage.cols/2, 0, srcImage.cols/2, srcImage.rows)); 그러나 이미지가 겹칠 필요가 있기 때문에 시도해 볼 수 있습니다.'Mat frontLensImage (srcImage, Rect (0, 0, 3 * srcImage.cols/4, srcImage.rows)); Mat rearLensImage (srcImage, Rect (srcImage.cols/4, 0, 3 * srcImage.cols/4, srcImage.rows)); ' – Miki
빠른 답장을 보내 주셔서 감사합니다! 겹치는 부분을 알지 못 했으니 까. 그것은 여전히 귀하의 코드를 사용하여 작동하지 않습니다. 이 오류가 발생했습니다 : '어설 션 실패 (size.width> 0 && size.height> 0) in imshow' – neobanshee