您当前的位置: 首页 >  opencv

txwtech

暂无认证

  • 4浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2021.3.27OpenCV04Mat对象的操作-图像复制克隆-转灰度空间-显示像素点的值-显示行列

txwtech 发布时间:2021-03-27 22:00:55 ,浏览量:4

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             
关注
打赏
1665060526
查看更多评论
0.0490s