2016-04-01 6 views
-1
#include <opencv2/opencv.hpp> 
... 

IplImage* img = cvLoadImage("TestImage.jpg", 1); 
Mat mtx(img); 

Этот код должен преобразовать img в формат Mat. Однако, когда я реализую это, я получаю сообщение об ошибке «Нет конструктора соответствия для инициализации cv :: Mat».Ошибка при преобразовании IplImage в Mat

Где я делаю неправильно? Синтаксис должен быть правильным, поэтому я предполагаю, что проблема лежит где-то в другом месте. Я использую OpenCV 3.1.0 и Xcode 7.2.1 в OSX Yosemite.

Спасибо заранее

+3

Не уверен, почему он не работает, но есть ли причина, по которой вы не можете использовать ['cv :: imread (...)'] (http://docs.opencv.org/3.1.0/d4 /da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)? –

+2

Потому что они удалили этот конструктор в 3.0.0. К тому времени C api (и 'IplImage) устарел на 5 лет, поэтому нет причин, по которым вы должны его использовать. Как говорит @ DanMašek, вы должны просто прочитать изображение непосредственно в 'Mat'. – beaker

+0

@beaker Хорошая мысль, я, кажется, пропустил это, когда посмотрел источник. Кажется, есть [другой] (http://stackoverflow.com/a/30849778/3962537) [вариант] (http://answers.opencv.org/question/23440/any-way-to-convert-iplimage-to -cvmat-in-opencv-300 /) ... и что это, скорее всего, дублирующий вопрос. –

ответ

1

Кажется, что резюме Конструктора :: Mat (IplImages *) исчезли из ядра/SRC/matrix.cpp. Кстати, я нашел для этого альтернативу.

Mat mtx = cv::cvarrToMat(img); 

Это должно быть сделано.

Смежные вопросы