2013-12-15 22 views
0

下面一段代碼輸出0DescrpitorExtractor :: create(「SIFT」)返回0?

Ptr<DescriptorExtractor> descriptor = DescriptorExtractor::create("SIFT"); 
cout << descriptor << endl; 

whilethis片的代碼輸出一個非零的指針。

Ptr<DescriptorExtractor> descriptor = DescriptorExtractor::create("ORB"); 
cout << descriptor << endl; 

我應該怎麼做才能修復create sift函數?我用opencv 2.4.7和2.4.6.1測試了它。

回答

2

SIFT和SURF獲得專利,非自由。

因此,使用這些,你必須

  • 包括 「opencv2 /非自由/ nonfree.hpp」 頭,
  • 鏈接opencv_nonfree.lib和
  • 呼叫cv::initModule_nonfree();
    在main()做任何事情之前。
+0

太棒了。它解決了我的問題。我有一切,但cv :: initModule_nonfree。這是最近添加的嗎?因爲相同的代碼之前工作.. –

+0

api不斷變化。不知道,什麼時候到來 – berak