2012-11-03 65 views
0

我非常需要opencv拼接模塊的幫助。我需要在opencv中使用「stitch」方法創建全景攝影。下面是我到目前爲止..但是當我運行程序時,我得到這個錯誤:需要更多的圖像。是否有OpenCV專家可以幫助我解決這個錯誤?OpenCV拼接

IplImage* img1 = cvLoadImage("/Users/myName/Desktop/image1.jpg", CV_LOAD_IMAGE_COLOR); 
IplImage* img2 = cvLoadImage("/Users/myName/Desktop/image2.jpg", CV_LOAD_IMAGE_COLOR); 

Mat vecImg1 = img1; 
Mat vecImg2 = img2; 

Mat allImages; 

allImages.push_back(vecImg1); 
allImages.push_back(vecImg2); 

Mat outputImage; 
Stitcher stitchImg = Stitcher::createDefault(); 
Stitcher::Status s = stitchImg.stitch(allImages, outputImage); 
cout << "status: " << s << endl; 

cvNamedWindow("stitch images", CV_WINDOW_AUTOSIZE); 
cvShowImage("stitch images", &outputImage); 
cvWaitKey(0); 
cvDestroyWindow("stitch images"); 
+0

我不是OpenCV專家,但您是否嘗試添加更多圖像你的'allImages'? – tamasgal

+0

兩張圖片應該足夠了。他們之間是否有足夠的重疊? – num3ric

+0

是的,有兩者之間有足夠的重疊,因爲他們要進行拼接樣本圖像.. :( – hsyforw

回答

4

我想「allImages」應該是vector<Mat>類型。

查看OpenCV示例「samples/cpp/stitching.cpp」。

+0

提供的示例代碼,我得到一個錯誤說 「CV :: _ InputArray :: _ InputArray(STD :: __ 1 ::矢量>常量&)」 – hsyforw

+0

它說,未定義符號架構x86_64的 – hsyforw

+0

我稱爲拼接但的.cpp我不斷收到錯誤.. :(。 – hsyforw

0

我居然找到了一個方法。

在Xcode中,在Build Settings下,我將編譯器類型從Apple LLVM更改爲LLVM GCC 4.2,現在我的代碼生成全景圖像了!

謝謝!

0

在stitcher類函數中,opencv查找圖像之間的特徵匹配。如果您輸入的圖像沒有共同特徵或特徵較少,則不會將這些圖像視爲同一視圖的圖像 因此需要更多圖像