-4

OpenCV 2.44 と Visual Studio C++ 2010 を使用しています

これをコンパイルすると

#include <opencv2/imgproc/imgproc_c.h>
#include <stdio.h>
#include <math.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/nonfree/features2d.hpp>
#include <opencv2/legacy/legacy.hpp>
using namespace cv;


void main()
{

    Mat img1 = imread( "hh.jpg", CV_LOAD_IMAGE_GRAYSCALE );
    Mat img2 = imread( "hh.jpg", CV_LOAD_IMAGE_GRAYSCALE );

    // detecting keypoints
    FastFeatureDetector detector(15);
    vector<KeyPoint> keypoints1;
    detector.detect(img1, keypoints1);

    // computing descriptors
    SurfDescriptorExtractor extractor;
    Mat descriptors1;
    extractor.compute(img1, keypoints1, descriptors1);

コードを実行すると、prj.exe の 0x580f375b で未処理の例外が発生します: 0xC0000005: アクセス違反の読み取り場所 0x001f7014。エラーはエクストラクタにあります

このチュートリアルリンクを使用しています

4

1 に答える 1

0

non-free モジュールの初期化を忘れているようです。SurfDescriptorExtractorを使用する前に、適切な関数を呼び出してみてください。

#include <opencv2/nonfree/nonfree.hpp>
...
cv::initModule_nonfree();
于 2013-03-30T20:37:44.900 に答える