2

执行代码时出现以下错误:(使用 Qt Creator 的 OpenCV)

OpenCV 错误:drawKeypoints 中的断言失败 (!outImage.empty()),文件 C:\Ope nCV\opencv\modules\features2d\src\draw.cpp,第 115 行 C:\OpenCV\opencv\modules\features2d\src\ draw.cpp:115: 错误: (-215) !outImage.em pty() in function drawKeypoints

代码:

#include <QCoreApplication>
#include <iostream>

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv/cv.h"
#include <opencv2/nonfree/features2d.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
   // QCoreApplication a(argc, argv);
    cout << "Hello World!" << endl;

    try {
    cv::Mat image = cv::imread("lena.jpg",0);
    // Create smart pointer for SIFT feature detector.
     cv::Ptr<FeatureDetector> featureDetector = cv::FeatureDetector::create("SIFT");
     cv::vector<KeyPoint> keypoints;

     // Detect the keypoints
     featureDetector->detect(image, keypoints); // NOTE: featureDetector is a pointer hence the '->'.

     //Similarly, we create a smart pointer to the SIFT extractor.
     cv::Ptr<DescriptorExtractor> featureExtractor = cv::DescriptorExtractor::create("SIFT");

     // Compute the 128 dimension SIFT descriptor at each keypoint.
     // Each row in "descriptors" correspond to the SIFT descriptor for each keypoint
     cv::Mat descriptors;
     featureExtractor->compute(image, keypoints, descriptors);

     // If you would like to draw the detected keypoint just to check
     cv::Mat outputImage;
     cv::Scalar keypointColor = cv::Scalar(255, 0, 0);     // Blue keypoints.
     drawKeypoints(image, keypoints, outputImage, keypointColor, cv::DrawMatchesFlags::DEFAULT);

     cvNamedWindow("Output");
     cv::imshow("Output", outputImage);

     char c = ' ';
     cvWaitKey(0);

    }
    catch(cv::Exception e)
    {
        cout<< e.msg;
    }

    return 0;
}

.pro 文件的内容

 INCLUDEPATH += "C:\\OpenCV\\opencv\\build\\x64\\mingw\\bin\\install\\include" \
                   "C:\\OpenCV\\opencv\\build\\x64\\mingw\\bin\\install\\include\\opencv"

\ "C:\OpenCV\opencv\build\x64\mingw\bin\install\include\opencv2"

    LIBS += -L"C:\\OpenCV\\opencv\\build\\x64\\mingw\\bin\\install\\lib" \
        -lopencv_core244d \
        -lopencv_highgui244d \
        -lopencv_imgproc244d \
        -lopencv_features2d244d \
        -lopencv_nonfree244d

我检查了工作目录中是否存在 lena.jpg

4

1 回答 1

3

调用 cv::initModule_nonfree(); 主要,在做任何其他事情之前

于 2013-08-20T18:18:31.947 回答