2

Visual Studio 2010 の単純なプログラムで使用すると、機能検出器が失敗します。私は opencv 2.4.2 を使用しており、2.4.1 もチェックしています。行われている唯一のことは、特徴検出器を作成し、それを使用して画像内のキーポイントを検出することです。detectors.cpp 内の「detecImpl()」という名前の関数 (つまり、features2d\detectors.cpp 行:65) を指している未処理の例外クラッシュが発生します。このエラーは本当にスタックしており、膨大な時間がかかっているため、助けていただければ幸いです。

#include <iostream>
#include <opencv2/core/core.hpp>
#include "opencv2/highgui/highgui.hpp" 
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>

using namespace std; 
using namespace cv; 

int main(int argc, char* argv[]) 
{ 
cv::Ptr<cv::FeatureDetector> featureDetector; 
cv::Ptr<cv::DescriptorExtractor> descriptorExtractor; 
featureDetector = cv::FeatureDetector::create("SURF"); 
descriptorExtractor = cv::DescriptorExtractor::create("SURF"); 
cv::Mat imageColor; 
cv::Mat image = cv::imread("car1.jpg", 0); 
    cv::cvtColor(image, imageColor, CV_GRAY2BGR); 
try{ 
imshow("Test Image",imageColor); 
cv::waitKey(3000); 
} 
catch(cv::Exception exc) 
{ 
cout << "CV error occured : " + exc.msg; 
} 
std::vector<cv::KeyPoint> currentKeypoints; 

try{ 
    featureDetector->detect(image,currentKeypoints);   //This line generates the error but no exception is caught .... 
    } 
catch(cv::Exception exc) 
{ 
cout << "CV error occured : " + exc.msg; 
return -1; 
} 
}
4

2 に答える 2

3

私はそれを理解しました。opencv の新しいバージョンでは、SURF/SIFT は別のライブラリに配布されており、特徴検出器を作成する前に初期化する必要があります。

于 2012-07-21T17:23:56.660 に答える
0

VS2010でOpenCV 2.4.2を使用しても同じことが起こりました。

FAST、STAR、ORB、BRISK、GFFT、および Harris が機能することがわかりました。

SIFT、SURF は、non-free 機能を含めてそれらを開始した後に動作します。

Dense & SimpleBob がクラッシュしました。

他のものと比較して最高の結果をもたらしたのは FAST (パフォーマンス + 精度) でした

于 2013-05-24T10:07:59.073 に答える