iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Qt+OpenCV联合开发中图像的创建与赋值是怎样的
  • 852
分享到

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

2023-06-29 00:06:50 852人浏览 独家记忆
摘要

这篇文章主要为大家分析了Qt+OpenCV联合开发中图像的创建与赋值是怎样的的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Qt+OpenCV联合开发中图像的

这篇文章主要为大家分析了Qt+OpenCV联合开发中图像的创建与赋值是怎样的的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Qt+OpenCV联合开发中图像的创建与赋值是怎样的”的知识吧。

一、Mat基本结构

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

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

 补充:

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

Mat 对象的创建有多种方式:克隆、复制、赋值、构造函数。速度从快到慢:构造函数、赋值、复制、克隆

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

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

 二、图像的克隆及拷贝

1、clone函数

Mat img_clone = src.clone();

2、copyTo函数

c++原型:

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

3、示例

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

在main中测试

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

 三、创建图像

1、创建空白图像:

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

 如图所示

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

 此处zeros的函数原型:

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

  参数一: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>

bit_depth-----比特数-----代表8bite,16bites,32bites,64bites
如果你现在创建了一个存储--灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位对应的就是CV_8

 2、S|U|F--S--代表signed int---有符号整形
 U--代表--unsigned int----无符号整形
 F--代表--float---------单精度浮点型

C<number_of_channels>----代表一张图片的通道数,比如:
 1--灰度图片--grayImg---单通道图像
 2--RGB彩色图像---------3通道图像
 3--带Alph通道的RGB图像----4通道图像

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

例如,CV_8U就等同于CV_8UC1,CV_32S就等同于CV_32SC1。

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

 3、拷贝和赋值的区别

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

Qt+OpenCV联合开发中图像的创建与赋值是怎样的

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

关于“Qt+OpenCV联合开发中图像的创建与赋值是怎样的”就介绍到这了,更多相关内容可以搜索编程网以前的文章,希望能够帮助大家答疑解惑,请多多支持编程网网站!

--结束END--

本文标题: Qt+OpenCV联合开发中图像的创建与赋值是怎样的

本文链接: https://www.lsjlt.com/news/321669.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Qt+OpenCV联合开发中图像的创建与赋值是怎样的
    这篇文章主要为大家分析了Qt+OpenCV联合开发中图像的创建与赋值是怎样的的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Qt+OpenCV联合开发中图像的...
    99+
    2023-06-29
  • 聊聊Qt+OpenCV联合开发之图像的创建与赋值问题
    目录一、Mat基本结构 二、图像的克隆及拷贝1、clone函数2、copyTo函数3、示例 三、创建图像1、创建空白图像:2、创建通道都为1的图: 3、...
    99+
    2024-04-02
  • python中opencv图像金字塔轮廓及模板匹配是怎样的
    这篇文章给大家介绍python中opencv图像金字塔轮廓及模板匹配是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.图像金字塔①高斯金字塔向下采样,数据会越来越少,减少的方式是:将偶数行和列删除向上采样,数据...
    99+
    2023-06-25
  • HTML5 SVG中的文本与图像及渲染文本介绍是怎样的
    这篇文章给大家介绍HTML5 SVG中的文本与图像及渲染文本介绍是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。SVG中渲染文本SVG的强大能力之一是它可以将文本控制到标准HTM...
    99+
    2024-04-02
  • ArcEngine开发中右键菜单的设计与实现是怎样的
    ArcEngine开发中右键菜单的设计与实现是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。利用ArcGIS Engine开发自定义GIS应用程序中,一般有两种方式来...
    99+
    2023-06-17
  • 前端开发中构建Web应用程序的前10个JavaScript框架是怎样的
    今天就跟大家聊聊有关前端开发中构建Web应用程序的前10个JavaScript框架是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。多年来,业界...
    99+
    2024-04-02
  • js中从原型链开始图解继承到组合继承的产生过程是怎样的
    这期内容当中小编将会给大家带来有关js中从原型链开始图解继承到组合继承的产生过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。于javascript原型链的层层递...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作