0

openCV ライブラリの使い方を学び始めたところです。openCV 2.4.0 をダウンロードしてインストールし、いくつかのサンプル プロジェクトを実行しました。このコード ブロックでは、goodFeaturesToTrack から出力を取得し、画像上にポイントをプロットしようとしています。コードはコンパイルされますが、実行するたびにクラッシュし、次のエラーが発生します。


Windows は、Corner.exe でブレークポイントをトリガーしました。

これは、ヒープの破損が原因である可能性があります。これは、Corner.exe またはそれがロードした DLL のバグを示しています。

これは、Corner.exe にフォーカスがあるときにユーザーが F12 キーを押したことが原因である可能性もあります。

出力ウィンドウには、より多くの診断情報が表示される場合があります。


出力ウィンドウには、これ以上の診断情報はありません。エラーを goodFeaturesToTrack 関数までたどりました。問題のあるコードは次のとおりです。

// Corner.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <opencv.hpp>
#include <opencv_modules.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>

#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>

using namespace cv; //If you don't have this, you won't be able to create a mat...
using namespace std;


#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <math.h>

//Whole bunch of #defines to make editing the code a lot easier

#define MAX_FEATURES 5
#define FILENAME "C:/Users/Mitchell/Desktop/lol.jpg"

int main(void)
{
    namedWindow("Out", CV_WINDOW_AUTOSIZE);
    namedWindow("In", CV_WINDOW_AUTOSIZE);  
    Mat Img;
    Img = cvLoadImage(FILENAME, CV_LOAD_IMAGE_GRAYSCALE);

    if(!Img.data)
    {
        fprintf(stderr, "ERROR: Couldn't open picture.");
        waitKey();
        return -1;
    }

    else
    {
        imshow("In", Img);
        waitKey();
    }

    std::vector<cv::Point2f> Img_features;
    int number_of_features = MAX_FEATURES;

    Mat Out = Mat::zeros(Img.cols, Img.rows, CV_32F);

    goodFeaturesToTrack(Img, Img_features, MAX_FEATURES, .01, .1, noArray(), 3, false);

    fprintf(stdout, "Got here...");

    /*for (int i = 0; i < MAX_FEATURES; i++)
    {
        Point2f p = Img_features[i];
        ellipse(Img, p, Size(1,1), 0, 0, 360, Scalar(255,0,0));
    }*/

    imshow("Out", Out);

    waitKey(0);
    return 0;


}

これはライブラリのバグですか、それとも何かばかげたことをしていますか?

4

1 に答える 1

0

goodFeaturesを呼び出す前に、Img_featuresベクトルにMAX_FEATURES項目が必要ですか? つまりImg_features.resize(MAX_FEATURES)、goodFeatures 呼び出しの前に試してください。

于 2012-11-09T04:55:35.727 に答える