2014-08-27 155 views
1

我試圖在2張圖片上找到匹配的興趣點。這個項目的最後是建立全景。OpenCV drawMatches什麼也不做

我有這樣的代碼

SIFT detector(0); 

src1 = imread(folder + inputName1 , 1); 
cvtColor(src1, src1_gray, CV_BGR2GRAY); 
// Detect first image 
vector<KeyPoint> keypoints1; 
detector.detect(src1_gray, keypoints1); 
//Draw keypoints back to source image 
drawKeypoints(src1,keypoints1,src1,Scalar::all(-1), 1); 
imwrite(folder + outputName1,src1); 


src2 = imread(folder + inputName2 , 1); 
cvtColor(src2, src2_gray, CV_BGR2GRAY); 
// Detect second image 
vector<KeyPoint> keypoints2; 
detector.detect(src2_gray, keypoints2); 
//Draw keypoints back to source image 
drawKeypoints(src2,keypoints2,src2,Scalar::all(-1), 1); 
imwrite(folder + outputName2,src2); 

vector<DMatch> matches; 
Mat output; 

drawMatches(src1,keypoints1,src2,keypoints2,matches,output); 

imwrite(folder + "matches.jpg",output); 

但在最終圖像matches.jpg,顯示所有點和矢量matches是空的。 我做錯了什麼?我想,只有匹配點將在最終圖像中,並且在向量matches中找到座標來繪製點之間的線條。

或者我應該使用RANSAC來查找匹配點嗎?

回答

3

您還沒有匹配任何內容。看看這個例子:http://docs.opencv.org/doc/user_guide/ug_features2d.html

您需要提取描述符,然後將它們與FLANN匹配。然後你可以畫你的火柴;)

+0

謝謝,這真的有幫助。但現在,我有很多線路。問題是,這也是壞點,不合適的點。我需要在它之前運行RANSAC,或者有人認爲我做錯了?謝謝 – Arxeiss 2014-08-27 16:34:36