(修改)IplImage, CvMat,cv::Mat之间的转换
来源:互联网 发布:淘宝上电脑主机 编辑:程序博客网 时间:2024/06/04 18:15
Overview:总结下它们之间的不同
1. IplImage 和 CvMat 是C语言的struct。 而cv::Mat 是c++中的结构。
2.IplImage 是针对图像来的。它的成员处理row,column以外,还有nChannel, aiphaChannel, depth 等图像才有的信息。而CvMat和cv::Mat 针对矩阵,方便了矩阵操作,当然cv::Mat 作为c++的类,可以帮你去管理内存的分配,这样就不用自己去create和release了,比cvMat要方便。
下面主要介绍下IplImage 和 cv::Mat 的文件IO操作以及他们之间的相互转化
1. IplImage 的文件IO
#include
#include
#include
IplImage * src_Img = NULL;
src_Img = cvLoadImage( ".//input.jpg" , CV_LOAD_IMAGE_GRAYSCALE );
cvReleaseImage (& src_Img);
2.Mat 读取图像
Mat mat = imread (".//input.jpg" , CV_8UC1 );
3.CvMat 转Mat(亲测可用)
CvMat *a ;
Mat b = Mat(a, true);
Mat b = Mat(a, true);
4. CvMat 转 IplImage
IplImage* img = cvCreateImage(cvGetSize(mat),8,1);
cvGetImage(matI,img);
cvSaveImage("rice1.bmp",img);
5.IplImage 转 CvMat
cvMat好像不能直接从文件中读取,要从IpImage转化而来。
IplImage * src_Img = NULL;
src_Img = cvLoadImage( ".//input.jpg" , CV_LOAD_IMAGE_GRAYSCALE );
cvMat *src_mat = cvCreateMat(src_Img->height, src_Img->width);
cvConvert (src_Img , src_mat );
cvReleaseImage (& src_Img);
cvReleaseMat (&src_mat );
6.IplImage* 转 Mat
IplImage* pImg = cvLoadImage("lena.jpg");
cv::Mat img(pImg,0); //0是不复制影像,也就是pImg与img的data共用同个记忆体位置,header各自有
7.Mat 转 IplImage
cv::Mat img;
IplImage image(img);
8.Mat 转 CvMat
OpenCV 里面很多函数例如cvZeros 等的输入参数都是CvArr *. Mat 是不能直接转CvArray的
Mat m = imread("input.jpg", CV_8UC1);
cvZeros(&m); // 错误
*****************
CvMat m1 = m; //浅拷贝, 不会复制数据,只会指向m中的数据
cvZeros(&m); //正确
********************
cvZero (&(CvMat ) mat); //正确,这样也可
0 0
- (修改)IplImage, CvMat,cv::Mat之间的转换
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- Mat|CvMat|IplImage|Byte|之间的转换
- CvMat, Mat, IplImage之间的互相转换
- CvMat、Mat、IplImage之间的转换
- CvMat、Mat、IplImage之间的转换详解
- cvmat、IplImage、Mat之间的转换
- CvMat、Mat、IplImage之间的转换详解
- CvMat、Mat、IplImage之间的转换 ***** **
- CvMat、IplImage和Mat之间的相互转换(精华)
- CvMat、IplImage和Mat之间的相互转换(精华)
- IplImage, Mat, CvMat之间转换
- cv::Mat,cvMat和IplImage的相互转换方法
- cv::Mat,cvMat和IplImage的相互转换方法
- cv::Mat,cvMat和IplImage的相互转换方法
- CvMat、 CvArr、Mat、IplImage和Mat之间的相互转换
- 如何设计一个优秀的数据库
- 判别式模型与生成式模型
- 面试算法——宝石比重量
- hdu4975(最大流判环)
- Spring _事务
- (修改)IplImage, CvMat,cv::Mat之间的转换
- Tomcat工程发布到linux系统上
- JavaScript中的setMonth()顺延问题及解决方法
- 实现数组作为函数参数传递,切返回值也是数组
- packstack --allinone无法成功启动的问题
- 如何设计数据库
- 第六周项目26-成员函数,友元函数与一般函数的区别
- 对图像高频信号和低频信号的理解
- linux之块设备驱动程序