2012-10-15 6 views
10

मैं OpenCV 2.4.2 में नया वर्ग FREAK कोशिश करना चाहते हैं।OpenCV 2.42 FeatureDetector सनकी

मैंने FREAK बनाने के लिए फीचर डिटेक्टर के सामान्य इंटरफेस का उपयोग करने की कोशिश की, लेकिन, ज़ाहिर है, यह काम नहीं करता है। मैं कैसे को संशोधित करना चाहिए मेरी कोड प्राप्त परिणाम के लिए?

#include <stdio.h> 
#include <iostream> 
#include <opencv\cxcore.h> 
#include <opencv2\nonfree\features2d.hpp> 
#include <opencv\highgui.h> 
#include <opencv2\features2d\features2d.hpp> 
#include <vector> 

using namespace std; 
using namespace cv; 

int main(){ 
    Mat mat1; 
    mat1 = imread("Testimg06.jpg",0); 
    vector<KeyPoint> P1; 
    Ptr<FeatureDetector> freakdes; 
    Ptr<DescriptorExtractor> descriptorExtractor; 
    freakdes = FeatureDetector::create("FREAK"); 

    freakdes->detect(mat1,P1); 

    Mat keypoint_img; 

    drawKeypoints(mat1, P1, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT); 
    imshow("Keypoints 1", keypoint_img); 
    cvWaitKey(0); 

} 

उत्तर

7

एक ओपनसीवी example है जो दिखाता है कि तेजी से FREAK का उपयोग कैसे करें।

बुनियादी निर्देश हैं:

FREAK extractor; 
BruteForceMatcher<Hamming> matcher; 
std::vector<KeyPoint> keypointsA, keypointsB; 
Mat descriptorsA, descriptorsB; 
std::vector<DMatch> matches; 

FAST(imgA,keypointsA,10); 
FAST(imgB,keypointsB,10); 

extractor.compute(imgA, keypointsA, descriptorsA); 
extractor.compute(imgB, keypointsB, descriptorsB); 

matcher.match(descriptorsA, descriptorsB, matches); 
+1

याद रखिए कि, सबसे अच्छा प्रदर्शन करने के लिए में, सनकी रोटेशन और अपरिवर्तनीय पैमाना keypoints की जरूरत है, इतनी तेजी से सबसे अच्छा विकल्प नहीं है, को देखने के * अधिक जानकारी के लिए बाइनरी Keypoint वर्णनकर्ता * का मूल्यांकन: http://2013.ieeeicip.org/proc /pdfs/0003652.pdf – aledalgrande

8

FREAK केवल वर्णनकर्ता है। कोई इसी सुविधा डिटेक्टर है।

तो आपको इसे उपलब्ध डिटेक्टरों में से एक के साथ संयोजित करने की आवश्यकता है: फास्ट, ओआरबी, सिफ्ट, एसयूआरएफ, एमएसईआर या goodFeaturesToTrack फ़ंक्शन का उपयोग करें।

+0

धन्यवाद एक बहुत! खुराक का मतलब है कि मैं का उपयोग करना चाहिए 'DescriptorExtractor' सुविधा के वर्णनकर्ता के रूप में सनकी स्थापित करने के लिए? –