在新版本与旧版本之间纠结,到底是用Mat,还是Iplimage?

Mat 侧重于数据计算,而Iplimage注重于图像的处理。

因此,应根据具体需要灵活使用,那个好用用哪个,只要在两者之间进行转换即可。

一、派生关系:CvArr -> CvMat -> IplImage

IplImage由CvMat派生,而CvMat由CvArr派生

CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理。

二、转换方式:

1.  IplImage,CvMat 向Mat  转换:

主要利用Mat的构造函数

Mat::Mat(const CvMat* m, bool copyData=false);

因为IplImage是从CvMat派生而来,所以,两者的转换都采用该函数。其中,copyData表示是否复制数据。

例:

CvMat
 mI  ;

Mat
 I=Mat(mI);

2. Mat  向  IplImage,CvMat 转换:

(1)文件头的复制,只创建文件头,不复制数据

Mat  I;

IplImage  pI = I;或  IplImage  pI = IplImage (I);

CvMat  mI  = I;

(2)指针转换,需要调用IplImage和CvMat运算符得到指针,为了得到指针需要使用&符号:

Mat  I;

IplImage*  pI = &I.operator IplImage(); 或 IplImage*  pI
= &(IplImage(I));

CvMat*  mI = &I.operator CvMat();

3.CvMat 与 IplImage的转换

(1)CvMat 转向 IplImage

CvMat*  mat_origin;//可以
         IplImage  img_buffer ;

cvGetImage(mat_origin,&img_buffer);

(2) IplImage转向CvMat

法1:只生成一个新的矩阵头,而数据都指向原来的地址

CvMat mathdr,

*mat = cvGetMat( img, &mathdr );

其中, cvGetMatconst
CvArr* arr, CvMat* header)

法2:CvMat *mat = cvCreateMat( img->height, img->width, CV_64FC3 );
                    cvConvert( img, mat );

Mat ,IplImage, CvMat 之间的转换的总结的更多相关文章

  1. Mat, IplImage, CvMat, Cvarr关系及元素获取

    自己目前正打算整理opencv数据结构之间关系,寻寻觅觅之间,发现这篇博文很全面,总结得很好,故转之.红色部分不对,自己已修改! 原文地址:http://blog.csdn.net/abcjennif ...

  2. OpenCV图片类cv::Mat和QImage之间进行转换(好多相关文章)

    在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子: //##### cv::Mat ---> QImage ## ...

  3. OpenCV——Mat,IplImage,CvMat类型转换

    Mat,cvMat和IplImage这三种类型都可以代表和显示图像,三者区别如下 Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. 而CvMat和IplImage类型更侧 ...

  4. mat 和IPIImage之间的转换

    opencv2.3.1 Mat::operator IplImageCreates the IplImage header for the matrix.C++: Mat::operator IplI ...

  5. OpenCV Mat与UIImage之间的转换

    UIImage 转 OpenCV cvMat: - (cv::Mat)cvMatWithImage:(UIImage *)image { CGColorSpaceRef colorSpace = CG ...

  6. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  7. CvMat、Mat、IplImage之间的转换详解及实例

    见原博客:http://blog.sina.com.cn/s/blog_74a459380101obhm.html OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数 ...

  8. CvArr、Mat、CvMat、IplImage、BYTE转换

    一.Mat类型:矩阵类型,Matrix.     在openCV中.Mat是一个多维的密集数据数组. 能够用来处理向量和矩阵.图像.直方图等等常见的多维数据.     Mat有3个重要的方法:     ...

  9. 图像处理之opencv---mat、cvmat、IplImage之间的转换

    一.Mat类型:矩阵类型,Matrix.  在openCV中,Mat是一个多维的密集数据数组.可以用来处理向量和矩阵.图像.直方图等等常见的多维数据. Mat有3个重要的方法: 1.Mat mat = ...

随机推荐

  1. django-admin 设计User外键,设计model

    设置外键 class profile_user(AbstractBaseUser, PermissionsMixin): company = models.ForeignKey(Company, de ...

  2. MySQL数据库(8)_MySQL数据库总结

    sql语句规范 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 在使用它时,只需要发出“做什么” ...

  3. MySQL数据库(6)_用户操作与权限管理、视图、存储过程、触发器、基本函数

    用户操作与权限管理 MySQL用户操作 创建用户 方法一: CREATE USER语句创建 CREATE USER "用户名"@"IP地址" IDENTIFIE ...

  4. 前端基础之jquery_mouse相关操作与不同

    jquery中mouse相关操作与不同 mousedown() //当鼠标指针移动到元素上方,并按下鼠标左键时,会发生 mousedown 事件 mouseup() //当鼠标指针移动到元素上方,并松 ...

  5. Mac 环境 下使用Charles 抓包Http/Https请求

    实现目标 在Mac 上 对 iOS  真机 和 模拟器 进行 Http/Https抓包 使用工具 Mac 上 Charles 4.2  安装 参考链接 1. 和 链接 2. 抓包 http 请求 (1 ...

  6. java FileUtils 文件工具类

    package com.sicdt.library.core.utils; import java.io.BufferedInputStream; import java.io.File; impor ...

  7. requestAnimationFrame 的实验性实践

    记得当 requestAnimationFrame 出现时我立马就石更了,就跟初次玩耍 transition 时一样,欣喜若狂... 然后,然后特么的就懵逼了,这明明就是口挖不通的深井呀(如果是我傻, ...

  8. 大话设计模式之PHP篇 - 适配器模式

    定义将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作. 角色Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口.Adapte ...

  9. windows 服务安装报错

    使用windows服务开发的定时任务,在win7上都运行良好,在windows server 2008上运行报错,报错信息如下 错误应用程序名称: GCWindowsService.exe,版本: 1 ...

  10. Vue.js学习笔记 第一篇 数据绑定

    双花括号文本插值 先来个最简单的例子,看完之后立马会用Vue了,是不是很有成就感 <!DOCTYPE html> <html> <head> <meta ch ...