OpenCV: использование cvGoodFeaturesToTrack с переменной C ++ mat

Я пытаюсь использовать cvGoodFeatureToTrack функция в Visual Studio 2010 с типом изображения как Mat, Большинство примеров, которые я видел, используют IplImage указатель.
Прямо сейчас у меня есть это:

int w, h; // video frame size

Mat grayFrame;
Mat eigImage;
Mat tempImage;
const int MAX_CORNERS = 10;
CvPoint2D32f corners[MAX_CORNERS] = {0};
int corner_count = MAX_CORNERS;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;

w = CurrFrame.size().width;
h = CurrFrame.size().height;
cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cvGoodFeaturesToTrack(&grayFrame,
&eigImage,
&tempImage,
corners,
&corner_count,
quality_level,
min_distance,
NULL,
eig_block_size,
use_harris);

Он компилируется, но дает мне нарушение доступа к памяти. Помогите!

0

Решение

В качестве отправной точки, если вы все равно используете C ++ (например, ваше использование cv::Mat а также cv::cvtColor предлагает), тогда почему бы не использовать интерфейс C ++ для остальных тоже?

Это будет означать использование cv::goodFeaturesToTrack или cv::GoodFeaturesToTrackDetector, которые предназначены для работы на cv::Mat и друзья вместо того, чтобы делать ненужные броски из cv::Mat в IplImage*,

cv::Mat grayFrame;
std::vector<cv::Point2f> corners;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;

const int MAX_CORNERS = 10;
cv::cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cv::goodFeaturesToTrack(grayFrame,
corners,
MAX_CORNERS,
quality_level,
min_distance,
cv::noArray(),
eig_block_size,
use_harris);
6

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

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

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