首页 > 作文

聊聊Qt+OpenCV联合开发之图像的创建与赋值问题

更新时间:2023-04-04 19:27:37 阅读: 评论:0

目录
一、mat基本结构二、图像的克隆及拷贝1、clone函数百分数的认识ppt2、copyto函数3、示例三、创建图像1、创建空白图像:2、创建通道都为1的图:3、拷贝和赋值的区别3.1用scalar函数设置m3对象为绿色3.2m3赋值给m4,m4改为黄色3.3拷贝m3给m4,m4改为黄色

一、mat基本结构

1、mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类,它mat分为头部(包括图像的大小、宽高、类型、通道数等)和数据部分(像素的值的集合)

2、获取的mat对象赋值给另一个对象时候,相当于把这个指针重新指向原来的数据,实质上还是指向同一个datablock。只有在进行克隆或者拷贝的时候,才会把这个mat中所有的数据复制一份供你使用。mat基本结构如图所示。

补充:

1、数据部分主要包含图像的像素数据,各个像素点的像素值。若单通道,每个像素点只有一个值;若三通道,每个像素点有三个值。

2、mat 对象的创建有文理分科如何选择多种方式:克隆、复制、赋值、构造函数。速度从快到慢:构造函数、赋值、复制、克隆

赋值法:赋值产生的对象与原赋值对象指向同一个内存地址data block。(浅拷贝)copy/clone法:会产生的新内存对象,指向独立的data block。(深拷贝)构造函数:mat img_constructe(src);//src为图片源地址

下面主要介绍图像的克隆及拷贝

二、图像的克隆及拷贝

1、clone函数

mat img_clone = src.clone();

2、copyto函数

c++原型:

参数一:outputarray,目标矩阵(输出的图片)。

3、示例

同以前一样,声明函数放在test1.h文件里,实现放在test1.cpp文件里

在main中测试

从下图可以看出,显示的两张图没什么区别

三、创建图像

1、创建空白图像:

如图所示

此处zeros的函数原型:

参数一:size,矩阵(图像)大小。

参数二:type,图像类型

opencv的源代码中提到:(_type is cv_8uc1, cv_64fc3, cv_32sc(12) etc.)

cv_8uc1,cv_64fc3是枚举类型,所以这里的type可以是任何的预定义类型,结构如下:

cv_<bit_depth>(s|u|f)c<number_of_channels>

1、bit_depth—–比特数—̵遥控直升机模型1;代表8bite,16bites,32bites,64bites
如果你现在创建了一个存储–灰度图片的mat对象,这个图像的大小为宽100,高100,那么,现在这张灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位对应的就是cv_8

2、s|u|f–s–代表signed int—有符号整形
u–代表–unsigned int—-无符号整形
f–代表–float会计专业就业前景———单精度浮点型

3、c<number_of_channels>—-代表一张图片的通道数,比如:
1–灰度图片–grayimg—单通道图像
2–than什么意思rgb彩色图像———3通道图像
3–带alph通道的rgb图像—-4通道图像

如果不带通道数的这些类型就是默认通道数为1。

例如,cv_8u就等同于cv_8uc1,cv_32s就等同于cv_32sc1。

将上述的代码修改成三通道后:

可以看出原矩阵从8×8变为了24×8,因为原来是单通道,而现在为3通道,代表着每个像素点包含了3个像素值,可以说明图像在mat上面真正的宽度等于通道数乘以mat定义矩阵的宽度,即3*8=24。

2、创建通道都为1的图:

但是每个通道都为1的图不能用在三通道上,如图,结果就是每个像素点的第一个通道为1,其余通道都为0。

其实我们也可以对m3赋值,来改变他的第一个通道的值。

如果想要每个通道的值都为127,可以通过调用scalar函数

3、拷贝和赋值的区别

3.1用scalar函数设置m3对象为绿色

3.2m3赋值给m4,m4改为黄色

3.3拷贝m3给m4,m4改为黄色

区别:拷贝不会改变原对象,而赋值则m4一变m3也会随之改变

原创不易,转载请注明出处:

https://blog.csdn.net/hml111666/article/details/122696593

cv_8uc1,cv_32fc3等参数的含义参考链接:

https://blog.csdn.net/qq_37764129/article/details/82078255

到此这篇关于qt+opencv联合开发之图像的创建与赋值的文章就介绍到这了,更多相关qt+opencv联合开发内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 19:27:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/982344e47ac09d9c3afa20696a670a8a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:聊聊Qt+OpenCV联合开发之图像的创建与赋值问题.doc

本文 PDF 下载地址:聊聊Qt+OpenCV联合开发之图像的创建与赋值问题.pdf

标签:赋值   图像   通道   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图