2017-07-11 2 views
1

passend habe ich versucht, ORB.My Code gute Spiele zu finden, ist wie folgt:Lösung für OpenCV Fehler: Nicht unterstütztes Format oder eine Kombination von Format - wenn ORB-Funktionen mit FlannBasedMatcher

Ptr<FeatureDetector> detector = ORB::create(); 
Mat descriptors_img1, descriptors_img2; 


//-- Step 2: Calculate descriptors (feature vectors) 
detector->detect(img1, kp1,descriptors_img1); 
detector->detect(img2, kp2,descriptors_img2); 


Ptr<DescriptorExtractor> extractor = ORB::create(); 
extractor->compute(img1, kp1, descriptors_img1); 
extractor->compute(img2, kp2, descriptors_img2); 
//-- Step 3: Matching descriptor vectors using FLANN matcher 
descriptors_img1.convertTo(descriptors_img1, CV_32F); 
descriptors_img2.convertTo(descriptors_img2, CV_32F); 
FlannBasedMatcher matcher; 
std::vector<DMatch> matches; 
matcher.match(descriptors_img1,descriptors_img2,matches); 
double max_dist = 0; double min_dist = 100; 

//-- Quick calculation of max and min distances between keypoints 
for(int i = 0; i < descriptors_img1.rows; i++) 
{ 
    double dist = matches[i].distance; 
    if(dist < min_dist) 
     min_dist = dist; 
    if(dist > max_dist) 
     max_dist = dist; 
} 

printf("-- Max dist : %f \n", max_dist); 
printf("-- Min dist : %f \n", min_dist); 

//-- Draw only "good" matches (i.e. whose distance is less than 3*min_dist) 
std::vector<DMatch> good_matches; 

for(int i = 0; i < descriptors_img1.rows; i++) 
{ 
    if(matches[i].distance < 3*min_dist) 
    { 
     good_matches.push_back(matches[i]); 
    } 
} 

Mat img_matches; 
drawMatches(img1,kp1,img2,kp2,good_matches,img_matches,Scalar::all(-1), 
     Scalar::all(-1),vector<char>(),DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS); 
//-- Show detected matches 
imshow("Good Matches", img_matches); 

Aber wenn ich laufe, mich erhalten Fehler Spruch:

OpenCV Error: Unsupported format or combination of formats (type=0 ) in buildIndex_, file /home/opencv-3.2.0/modules/flann/src/miniflann.cpp, line 315 terminate called after throwing an instance of 'cv::Exception' what(): /home/opencv-3.2.0/modules/flann/src/miniflann.cpp:315: error: (-210) type=0 in function buildIndex_

ich ähnliche Fragen gesucht, aber ich habe nicht meine answer.After Debuggen finde ich kam, dass Fehler zu wissen, bei

ist
matcher.match(....); 

Bitte helfen Sie mir bei der Beseitigung. Vielen Dank im Voraus

+0

Bitte fügen Sie die Fehlermeldung in Ihre Frage ein. –

+0

Nun habe ich bearbeitet und die Fehlermeldung – Anirudh

+0

Ich habe Ihren Code mit OpenCV3.2 und VC14 getestet, aber es hat gut funktioniert. Sind Sie sicher, dass Sie immer noch diesen Fehler mit dem von Ihnen bereitgestellten Code haben? –

Antwort

0

Ich habe diesen Fehler behoben. Sie ändern nur den Code

Ptr<ORB> detector = ORB::create() 

statt

Ptr<FeatureDetector> detector = ORB::create(); 

Dann ist es für mich gearbeitet.

Verwandte Themen