#opencv
#opencv
Вопрос:
Я пытаюсь выполнить отслеживание изображений с помощью cvMatchTemplate()
, но я продолжаю получать ошибку с ошибкой утверждения -215. Я надеюсь, что кто-нибудь сможет разобраться в этом. Я убедился, что все переменные не равны нулю, а результаты и шаблоны имеют правильный размер. Я на opencv 2.2
int ww = image->width - template->width 1;
int hh = image->height - template->height 1;
CvSize tempsize = cvSize(ww, hh);
IplImage *results = cvCreateImage(tempsize,image->depth, image->nChannels);
//set the roi
cvSetImageROI(image, roiFace);
cvMatchTemplate(image, template, results, CV_TM_SQDIFF_NORMED);
Вот ошибка:
`OpenCV Error: Assertion failed (
result.size() == cv::Size(std::abs(img.cols - templ.cols) 1, std::abs(img.rows - templ.rows) 1)
amp;amp;
result.type() == CV_32F) in
cvMatchTemplate, file /Volumes/ramdisk/opencv/OpenCV-2.2.0/modules/imgproc/src/templmatch.cpp, line 381
terminate called after throwing an instance of 'cv::Exception'
what(): /Volumes/ramdisk/opencv/OpenCV-2.2.0/modules/imgproc/src/templmatch.cpp:381: error: (-215) result.size() == cv::Size(std::abs(img.cols - templ.cols) 1, std::abs(img.rows - templ.rows) 1) amp;amp; result.type() == CV_32F in function cvMatchTemplate`
Ответ №1:
Ширина и высота кажутся нормальными. Возможно, глубина неверна. Измените cvCreateImage
строку на:
IplImage *results = cvCreateImage(tempsize,IPL_DEPTH_32F, 1);
Комментарии:
1. Да, nChannel был неправильным и должен был быть равен 1, но я все еще получаю ту же ошибку
2. @ssj: вы тоже изменились
IPL_DEPTH_32F
? Кроме того, вам, вероятно, нужно использовать размер ROI, а не размер изображения. ИспользуйтеroiFace.width
вместоimage->width
и соответственно для высоты.3. Бантар, ты прав, мне следовало использовать roi вместо полной ширины изображения.