OpenCV学习笔记(08):OpenCV3.2版本下的Mat和IplImage相互转换

时间:2021-08-05 17:50:24

1 前言

IplImage是计算机视觉处理数字图像的一种重要的抽象数据类型,最初来源于Intel公司的IPL(Image Processing Library)库。OpenCV1.0在实现该数据类型时使用了C语言风格的结构体,在以后高版本的OpenCV库中,该结构体得以保留。
IplImage作为初代OpenCV的最主要的抽象数据类型,在今时今日,仍然有很大的影响力,由于很多嵌入式设备只支持C语言,因此,C语言风格的OpenCV1.X仍然具有很大的生命力。我们在享受OpenCV最新版本带来的便捷的同时,不得不考虑OpenCV不同版本之间数据类型的转换问题。

2 IplImage转换成Mat类型

IplImage *img = cvLoadImage("Test.jpg", CV_LOAD_IMAGE_COLOR);
Mat src = cvarrToMat(img,true);

OpenCV学习笔记(08):OpenCV3.2版本下的Mat和IplImage相互转换

3 Mat类型转换成IplImage类型

Mat src = imread("Test.jpg", IMREAD_COLOR);
IplImage im = IplImage(src);

这里,IplImage作为一个类而被重新封装(而不是之前的结构体指针),并专门为Mat类型构造了一个转换的构造函数,直接转换即可。