OpenCV 2.4.0 C ++ goodFeaturesToTrack портит кучу?

Я только сейчас начинаю изучать, как использовать библиотеки openCV. Я скачал и установил openCV 2.4.0 и запустил несколько примеров проектов. В этом блоке кода я пытаюсь получить выходные данные из goodFeaturesToTrack и построить точки на изображении. Код компилируется, но каждый раз, когда я его запускаю, он падает, и я получаю следующую ошибку:


Windows запустила точку останова в Corner.exe.

Это может быть связано с повреждением кучи, что указывает на ошибку в Corner.exe или любой из загруженных им библиотек DLL.

Это также может быть связано с тем, что пользователь нажимает клавишу F12, когда Corner.exe находится в фокусе.

Окно вывода может иметь больше диагностической информации.


Окно вывода не имеет больше диагностической информации. Я отследил ошибку до функции 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;}

Это ошибка в библиотеке, или я делаю что-то глупое?

1

Решение

Может быть Img_features вектор должен иметь MAX_FEATURES предметы перед вызовом goodFeatures? то есть попробуйте Img_features.resize(MAX_FEATURES) перед вызовом goodFeatures.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]