Конвертация из IplImage* в cv:: мат
Я искал, чтобы преобразовать IplImage* в Mat, но все ответы были о преобразовании в cvMat.
Как я могу это сделать? и в чем разница между Mat и cvMat?
спасибо заранее
5 ответов
для записей: взглянув на core/src / matrix.cpp кажется, что, действительно, конструктор cv::Mat(IplImage*)
исчез.
но я нашел эту альтернативу:
IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don't copy data.
рекомендуемый способ-это cv::cvarrToMat
функции
cv::Mat
- базовая структура данных для OpenCV 2.x
CvMat
- старый аналог c cv::Mat
Проверьте Mat документация.
// converts old-style IplImage to the new matrix; the data is not copied by default
Mat(const IplImage* img, bool copyData=false);
cv:: циновка или циновка, оба такие же.
Mat имеет оператор CvMat (), поэтому простое назначение работает
конвертировать коврик в CvMat
Mat mat = ---------;
CvMat cvmat = mat;
конвертировать CVMat в Mat
Mat dst = Mat(cvmat, true);
преобразовать коврик в IplImage*
> Для Одного Канала
IplImage* image = cvCloneImage(&(IplImage)mat);
> Три Канал
IplImage* image = cvCreateImage(cvSize(mat.cols, mat.rows), 8, 3);
IplImage ipltemp = mat;
cvCopy(&ipltemp, image);
надеюсь, это поможет вам. Ура :)