2021.3.27OpenCV04Mat对象的操作-图像复制克隆-转灰度空间-显示像素点的值-显示行列-create方式创建mat对象
l
Mat
对象
OpenCV2.0
之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分
l
IplImage
是从
2001
年
OpenCV
发布之后就一直存在,是
C
语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题
Mat
对象使用
l
部分复制:一般情况下只会复制
Mat
对象的头和指针部分,不会复制数据部分
Mat A= imread(imgFilePath);
Mat B(A) // 只复制
l
完全复制:如果想把
Mat
对象的头部和数据部分一起复制,可以通过如下两个
API
实现
Mat F = A.clone(); 或 Mat G; A.copyTo(G);
l
Mat对象使用-四个要点
l
输出图像的内存是自动分配的
l
使用
OpenCV
的
C++
接口,不需要考虑内存分配问题
l
赋值操作和拷贝构造函数只会复制头部分
l
使用
clone
与
copyTo
两个函数实现数据完全复制
Mat对象创建
l
cv
::Mat::Mat
构造函数
Mat M(2,2,CV_8UC3, Scalar(0,0,255))
其中前两个参数分别表示行(row)跟列(column)、第三个CV_8UC3中的8表示每个通道占8位、U表示无符号、C表示Char类型、3表示通道数目是3,第四个参数是向量表示初始化每个像素值是多少,向量长度对应通道数目一致
l
创建多维数组
cv
::Mat::create
int sz[3] = {2,2,2};
Mat L(3,sz, CV_8UC1, Scalar::all(0));
//txwtech 2021.3
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat src;
src = imread("E:/pictures/test1.jpg");
if (src.empty())
{
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?