opencv学习中——图片类型转换

   在OpenCV中我们处理视频是先将视频保存成图像,然后再处理图像,将处理完的图像再生成视频,常见的图像操作有关容器有Mat,cvMat,IplImage等.
    Mat的定义是类(类中含有成员变量、成员函数和重载函数,利用自身的一些成员函数就可以进行很多的处理),有更强的矩阵运算能力,支持常见的矩阵运算,侧重于计算,数学性高,计算能力强缩短时间。
    CvMat和IplImage类型的定义是结构体(结构体中大多都是成员变量,需要一些辅助的函数去处理图片),更侧重于“图像”操作(缩放,单通道提取,图像阈值操作等)。

一.初始化与定义

Mat image = imread(const string& filename, intflags = 1);
//第二个参数取0时为灰度图;取1时为彩色图像;取2时,若载入的图像的深度为16位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回;取4时,代表保持颜色通道不变。
CvMat* image = cvCreateMat(int rows, int cols, int type);
IplImage* image = cvLoadImage(const char* filename, int iscolor = 1);//第二个参数读取图片的方式,而其中每个方式所定义的数字与imread相同

二. Mat类与IplImage类
调用Mat类的operator IplImage()成员函数
Mat转IplImage:

VideoCapture firedetection("G:/21.flv");
Mat frameimage;
IplImage imgTmp =frameimage;
IplImage *input = cvCloneImage(&imgTmp);

IplImage转Mat:

//使用Mat的构造函数:Mat::Mat(const IplImage* img, bool copyData=false);    默认情况下copyData为false
IplImage* srcImg = cvLoadImage("Lena.jpg");
Mat M(srcImg, true);

你可能感兴趣的:(opencv学习之路)