opencv中Mat与IplImage,CVMat类型之间转换
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利。
Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Matlab中的各种矩阵运算),所以将IplImage类型和CvMat类型转换为Mat类型更易于数据处理。
Mat类型可用于直接存储图像信息,通过函数imread、imwrite、imshow等实现(与Matlab中的函数相似)。Mat是opencv2.0推出的处理图像的新的数据结构,现在越来越有趋势取代之前的cvMat和lplImage,相比之下Mat最大的好处就是能够更加方便的进行内存管理,不再需要程序员手动管理内存的释放。
1、将IplImage类型转换到Mat类型
Mat::Mat(const IplImage* img, bool copyData=false);
默认情况下,新的Mat类型与原来的IplImage类型共享图像数据,转换只是创建一个Mat矩阵头。当将参数copyData设为true后,就会复制整个图像数据。
IplImage -> Mat Mat::Mat(const IplImage* img, bool copyData=false);/*default copyData=false,与原来的IplImage共享数据,只是创建一个矩阵头*/ 例子: IplImage* iplImg = cvLoadImage("greatwave.jpg", 1); Mat mtx(iplImg); /* IplImage * -> Mat,共享数据; or : Mat mtx = iplImg;*/
2、将Mat类型转换到IplImage类型
Mat -> IplImage Mat M IplImage iplimage = M; /*只创建图像头,不复制数据*/
3、将CvMat类型转换为Mat类型
CvMat -> Mat Mat::Mat(const CvMat* m, bool copyData=false); /*类似IplImage -> Mat,可选择是否复制数据*/
4、将Mat类型转换为CvMat类型
Mat -> CvMat 例子(假设Mat类型的imgMat图像数据存在): CvMat cvMat = imgMat;/*Mat -> CvMat, 类似转换到IplImage,不复制数据只创建矩阵头
opencv中Mat与IplImage,CVMat类型之间转换相关推荐
- C++下的OpenCV中Mat类型存储的图像格式
在调用CV进行图像处理时,经常涉及图像格式转换,经常出现原始图像输入后CV_32F与ushort之间的数据差异导致程序报错,可使用std::cout << "dilated_ty ...
- Opencv中Mat的data数据只定义为uchar*类型,
opencv中Mat的数据定义为指向uchar 的指针,而构造函数又提供了许多其他类型. 其实数据在内存中是一维存储的,而图像基本结构是二维的,3D图像还会是三维的:同时,彩色图像还有多个channe ...
- OpenCV中Mat的属性
OpenCV中Mat的属性 最近在做一OpenCV的图像轮廓检验,但当用到霍夫变换时才发现对Mat的属性了解不足.Mat在OpenCV中的地位是及其重要的,因此有必要做一个总结. 大体上来说,Mat是 ...
- opencv中Mat究竟是什么?
opencv中Mat究竟是什么?(试着运行一下两个代码) 首先看opencv是怎么显示一张图的 : //#include "stdafx.h"#include <opencv ...
- OpenCV中的图像处理 —— 图像阈值+图像平滑+形态转换
OpenCV中的图像处理 -- 图像阈值+图像平滑+形态转换 目录 OpenCV中的图像处理 -- 图像阈值+图像平滑+形态转换 1. 图像阈值 1.1 简单阈值 1.2 自适应阈值 1.3 Otsu ...
- Linq--使用Linq在不同类型之间转换
需求: 有两个类型,分别为MyUser和YourUser,要在这两个类型之间进行转换 MyUser.cs namespace XMLSpy.Linq{ public class MyUser{ ...
- java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
- java中byte数组与int类型的转换(两种方式)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
- Go : 类型之间转换数字的测试(附完整源码)
Go : 类型之间转换数字的测试 package main var i8 int8; var u8 uint8; var i16 int16; var u16 uint16; var i32 int3 ...
最新文章
- JavaEE 要懂的小事:二、图解 Cookie(小甜饼)
- 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )
- 人还是很需要成就感的
- 苹果复兴_类型复兴的故事:来自Type West的经验教训
- python 常用 time, datetime处理
- SpringBoot-异常处理
- jQuery学习笔记(五)
- python控制键盘游戏内无效_关于python的游戏《兔子和獾》代码写到用键盘输入WASD控制兔子移动时,兔子移动不了。但是。。。...
- matlab离散信号幅频相频特性,信号幅频相频特性画法(频率响应法).pdf
- JavaScript的js文件压缩和格式化工具
- tolua unity 报错_Unity手游开发札记——ToLua#集成内存泄露检查和性能检测工具
- ubuntu查看磁盘分区使用情况命令df
- PTA L1-087(C++) 机工士姆斯塔迪奥
- Dubbo之@Adaptive
- 联想z5 Android 9.0,联想Z5开启Android 9.0内测,新增人脸识别!
- 不上架App Store怎么安装到非越狱苹果手机使用
- 14015problem I 方案数
- 【Python】批量修改照片日期和文件名
- 2021 || You Cannot Easily Catch Me: A Low-Detectable Adversarial Patch for Object Detectors
- EOJ.Weights