2011-11-20 303 views
10

我試圖拼接2張圖片只是爲了開始平版印刷。我「已經已經找到關鍵點,發現單應使用RANSAC,但我無法弄清楚如何使這些2幅圖像(我在OpenCV的新的)。現在的代碼在opencv中拼接2張圖片

vector<Point2f> points1, points2; 
for(int i = 0; i < good_matches.size(); i++) 
{ 
    //-- Get the keypoints from the good matches 
    points1.push_back(keypoints1[ good_matches[i].queryIdx ].pt); 
    points2.push_back(keypoints2[ good_matches[i].trainIdx ].pt); 
} 

/* Find Homography */ 
Mat H = findHomography(Mat(points2), Mat(points1), CV_RANSAC); 

/* warp the image */ 
warpPerspective(mImg2, warpImage2, H, Size(mImg2.cols*2, mImg2.rows*2), INTER_CUBIC); 

的一部分,我需要縫合Mat mImg1在哪裏加載第一張圖片和Mat warpImage2哪裏是扭曲的第二張圖片,你能告訴我怎麼做嗎?我也有扭曲的圖像切割,我知道我必須改變單應矩陣,但現在我需要對齊。這兩個圖像感謝您幫助

編輯:馬丁·貝克特的幫助下,我加入這個代碼

//Point a cv::Mat header at it (no allocation is done) 
Mat final(Size(mImg2.cols*2 + mImg1.cols, mImg2.rows*2),CV_8UC3); 

//velikost img1 
Mat roi1(final, Rect(0, 0, mImg1.cols, mImg1.rows)); 
Mat roi2(final, Rect(0, 0, warpImage2.cols, warpImage2.rows)); 
warpImage2.copyTo(roi2); 
mImg1.copyTo(roi1); 
imshow("final", final); 

,它的工作現在

回答

8

創建正確的組合大小的一個新的更大的圖像,然後在位置的現有圖像的大小make ROIs你希望他們最終圖像的和現有的圖像複製到的ROI 。

+0

謝謝!這工作 – Bodyboard

+0

我做了你的步驟,由Bodyboard編輯,但我總是得到最終圖像作爲一個灰色圖像完全。 !而我確定我的結果圖像是正確的扭曲。任何幫助將不勝感激, – dervish

+3

@dervish是你的源圖像3channel?如果沒有,則必須在拼接前轉換它們,或者將結果與源相同,然後轉換爲 –