OpenCV 2.4.9中的SURF特征检测

时间:2015-01-02 05:40:33

标签: c++ opencv visual-studio-2013

我在Windows 8.1中使用OpenCV 2.4.9和Microsoft Visual Studio Community 2013来实现使用SURF进行特征提取。 在调试时,我收到此消息:“Debug Assertation Failed。表达式:无效的空指针”除了命令行不执行任何参数,因为readme()函数执行。我是opencv的新手,因此使用了opencv 2.4.9教程中的代码。请帮忙解决这个问题

#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/nonfree/nonfree.hpp"
using namespace cv;
void readme();
/** @function main */
int main(int argc, char** argv)
{
    if (argc != 3)
    {
        readme(); 
    }
    Mat img_1 = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
    Mat img_2 = imread(argv[2], CV_LOAD_IMAGE_GRAYSCALE);
    if (!img_1.data || !img_2.data)
    {
        std::cout << " --(!) Error reading images " << std::endl; return -1;
    }

    //-- Step 1: Detect the keypoints using SURF Detector
    int minHessian = 400;
    SurfFeatureDetector detector(minHessian);
    std::vector<KeyPoint> keypoints_1, keypoints_2;
    detector.detect(img_1, keypoints_1);
    detector.detect(img_2, keypoints_2);
    //-- Draw keypoints
    Mat img_keypoints_1; Mat img_keypoints_2;
    drawKeypoints(img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
    drawKeypoints(img_2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
    //-- Show detected (drawn) keypoints
    imshow("Keypoints 1", img_keypoints_1);
    imshow("Keypoints 2", img_keypoints_2);
    waitKey(0);
    return 0;
}
/** @function readme */
void readme()
{
    std::cout << " Usage: ./SURF_detector <img1> <img2>" << std::endl;
}

0 个答案:

没有答案