如何在OpenCV 2.0中转换IplImage变量类型的Mat变量类型?

Spr*_*dzy 12 opencv iplimage

我试图在OpenCV中旋转图像.

我使用了Stack Overflow上的代码:

Mat source(img);
Point2f src_center(source.cols/2.0, source.rows/2.0);
Mat rot_mat = getRotationMatrix2D(src_center, 40.0, 1.0);
Mat dst;
warpAffine(source, dst, rot_mat, source.size());
Run Code Online (Sandbox Code Playgroud)

一旦我dst Mat填充了变量类型,我想把它放回IplImage变量类型,任何想法如何做到这一点?

jef*_*ff7 17

在新的OpenCV 2.0 C++接口它是不是真的有必要从之间来回变化MatIplImage,但如果你愿意,你可以使用IplImage运营商:

IplImage dst_img = dst;
Run Code Online (Sandbox Code Playgroud)

请注意,仅创建IplImage标头,并且将共享数据(像素).有关详细信息,请参阅 OpenCV C++界面或目录中的image.cpp示例OpenCV-2.0/samples/c.


lum*_*apu 15

为了拥有整个IplImage对象,我使用了这段代码:

Mat matImage;
IplImage* iplImage;

iplImage = cvCreateImage(cvSize(640,480), IPL_DEPTH_8U, 1);
iplImage->imageData = (char *) matImage.data;
Run Code Online (Sandbox Code Playgroud)

您也可以复制数据而不是指针:

memcpy(iplImage->imageData, matimage.data, 640*480);
Run Code Online (Sandbox Code Playgroud)