opencv学习总结

Mat类学习

Opencv中的数据类型与我们常用的数据类型的一一对应关系:Mat_<uchar>->CV_8U;Mat_<char>->CV_8S;Mat_<short>->CV_16S;Mat_<ushort>->CV_16U;Mat_<int>->CV_32S;Mat_<float>->CV_32F;Mat_<double>->CV_64F。

Mat类中depth与type属性的理解:depth是用来度量每一个像素中每一个通道的精度,但它本身与图像的通道数无关。depth数值越大,精度越高。type是矩阵的类型,包含矩阵中元素的类型以及通道数信息,type的命名格式为CV_(位数)+(数据类型)+(通道数)。

Mat类中data属性理解:uchar类型的指针,指向Mat数据矩阵的首地址。

Mat类中可以访问像素值的函数:1)ptr函数:该函数作用是可以访问任意一行像素的首地址,格式是image.ptr<数据类型,一般为uchar>(指定的行数);2)at函数:该函数作用是可以访问图像中的任意一个像素,格式有两种,单通道是image.at(i,j);三通道格式如下:蓝色通道:image.at(i,j)[0];绿色通道:image.at(i,j)[1];红色通道:image.at(i,j)[2]。

定义int数据类型的矩阵A,用at函数以double型进行访问矩阵A的元素,这是不可以的。定义double数据类型的矩阵A,用at函数以int型进行访问矩阵A的元素,这也是不可以的。因为在定义矩阵的时候,已经确定好了矩阵的元素类型,分配好了相应的矩阵内存,以另外的数据类型格式去访问的话,类型不匹配。如果要转换的话,需要在前面加上强制类型转换符。

Mat是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的指针。

Mat类对图像内存的分配:一般来说,赋值运算符和拷贝构造函数(构造函数)只复制信息头,不复制整个矩阵,而使用函数clone()或者copyTo()是来复制一幅图像的矩阵。

Mat类定义对象常用的几种形式:
1.使用Mat()构造函数
常用的几种构造函数:1)Mat(int rows,int cols,int type);2)Mat(Size size,int type);3)Mat(int rows,int cols,int type,const Scalar& s);4)Mat(Size size,int type,const Scalar& s);

2.利用create()函数对Mat类进行初始化工作
举例:Mat B; B.Create(2,2,2,CV_8UC1);

3.利用Matlab式的初始化方式:zeros(),ones(),eye()
举例:
1)Mat E=Mat::eye(4,4,CV_64F);
2)Mat O=Mat:ones(2,2,CV_32F);
3)Mat Z=Mat::zeros(3,3,CV_8UC1);

4.对小矩阵使用逗号分隔式初始化函数
Mat C=(Mat_(3,3,)<<0,-1,0,-1,5,-1,0,-1,0);

5.为已存在的对象创建新信息头(使用成员函数clone()和copyTo࿰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sentinel链路流控模式失效的解决方法

解决方法 1、在pom.xml中增加sentinel-web-servlet的依赖&#xff0c;我使用的版本是1.7.1 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-web-servlet</artifactId> </dependency>2、在项目中添加一个FilterCon…

uniapp应用如何实现传感器数据采集和分析

UniApp是一种跨平台的应用开发框架&#xff0c;它支持在同一份代码中同时开发iOS、Android、H5等多个平台的应用。在UniApp中实现传感器数据采集和分析的过程可以分为以下几个步骤&#xff1a; 引入相关插件或库 UniApp通过插件或库的形式扩展功能。对于传感器数据采集和分析&…

1679. K 和数对的最大数目

1679. K 和数对的最大数目 题目链接&#xff1a;1679. K 和数对的最大数目 代码如下&#xff1a; class Solution { public://双指针法int maxOperations(vector<int>& nums, int k) {if(nums.size()<1) return 0;sort(nums.begin(),nums.end());int res0;int…

MySQL 9.0 GA 来了!

2024 年 7 月 2 日&#xff0c;MySQL 9.0 GA 版本正式发布。还记得 MySQL 8.0 版本正式发布于 2018 年 4 月 19 日&#xff0c;中间经过了 6 年之久&#xff0c;MySQL 官方终于发布了大版本号变更得 9.0 版本&#xff0c;接下来由我给大家介绍 MySQL 在 9.0 版本中有哪些新的变…

C++学习笔记---POCO库

在Windows系统中安装POCO 1&#xff09;安装OpenSSL POCO编译安装依赖OpenSSL&#xff0c;如果未安装OpenSSL则应该先安装OpenSSL。 假设将OpenSSL安装在C:\OpenSSL-Win64&#xff0c;将C:\OpenSSL-Win64、C:\OpenSSL-Win64\lib添加到PATH环境变量中2&#xff09;安装POCO 将p…

C++11新特性【下】{lambda表达式、可变模板参数、包装器}

一、lambda表达式 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。如果待排序元素为自定义类型&#xff0c;需要用户定义排序时的比较规则&#xff0c;随着C语法的发展&#xff0c;人们开始觉得上面的写法太复杂了&#xff0c…

深入理解Git:checkout的本质与原理深度解析

在Git的版本控制世界中&#xff0c;checkout是一个极其重要且功能丰富的命令&#xff0c;它贯穿于日常开发的各个环节。然而&#xff0c;随着Git版本的更新迭代&#xff0c;checkout的功能逐渐被新的命令如switch和restore所分解&#xff0c;但这并不妨碍我们深入理解其本质与原…

#练习 #综合 LinuxC高级

一、选择题 1.常见的Linux发行版本有很多&#xff0c;下面不是Linux发行版本的是( ) A. Red Hat Linux B. Ubuntu Linux C.X Window D.SuSE Linux 答案 2.下面不是对Linux操作系统特点描述的是( ) A.良好的可移植性 B.单用户 C.多用户 D.多任务 答案…

1-讯飞星火大模型API调用示例解析

1官网链接 比赛官网&#xff1a;2024 iFLYTEK A.I.开发者大赛-讯飞开放平台 (xfyun.cn)&#xff1b;控制台官网&#xff1a;控制台-讯飞开放平台 (xfyun.cn)&#xff1b; 2星火模型python调用示例 示例链接&#xff1a;https://xfyun-doc.xfyun.cn/lc-sp-PythonDemo-17163704…

了解MySQL【事务】的功能:确保数据完整性的关键技术

在数据库管理中&#xff0c;事务是确保数据完整性和一致性的核心机制。特别是对MySQL这样广泛应用的开源数据库系统&#xff0c;掌握事务的使用至关重要。在这篇文章中&#xff0c;我们将全面探讨MySQL事务的工作原理、ACID属性、隔离级别以及最佳实践&#xff0c;从而帮助开发…

宝塔Linux面板配置环境 + 创建站点

一、安装 &#xff08;1&#xff09;进入宝塔官网 https://www.bt.cn/new/index.html &#xff08;2&#xff09;点击“ 立即免费安装 ”&#xff0c;选择 Centos安装脚本 &#xff08;3&#xff09;进入 ssh 输入以下命令安装宝塔 yum install -y wget && wget -O …

实验三 SQL Server SSMS工具添加数据

1、打开ecommerce数据库&#xff0c;向表中分别录入以下数据信息 &#xff08;1&#xff09;商品类别表category catno catname describe 101 手机 各种品牌、型号手机 201 激光打印机 各种激光打印机 202 喷墨打印机 各种喷墨打印机 301 平板电脑 各种平板电脑…

Python后端面试题

1. 文件操作w和r的区别 在Python中&#xff0c;文件操作模式中的w和r都表示对文件的读写操作&#xff0c;但它们在打开文件时的行为有所不同&#xff1a; r模式&#xff1a; 读写&#xff1a;这种模式允许你同时读取和写入文件。文件必须已经存在&#xff0c;否则会抛出一个Fi…

思看科技募资额骤降:对赌压力下巨额分红,还购买 7项商业房产

《港湾商业观察》施子夫 6月11日&#xff0c;证监会网站披露思看科技&#xff08;杭州&#xff09;股份有限公司&#xff08;以下简称&#xff0c;思看科技&#xff09;的首轮审核问询函回复意见并更新2023年财务数据&#xff0c;继续推进上市进程。 公开信息显示&#xff0c…

低空经济背景下的无人机人才培养

无人机作为低空经济的重要组成部分&#xff0c;其技术的进步和应用的拓展直接推动了低空经济的快速发展。无人机以其高效、灵活、低成本的特点&#xff0c;在多个领域发挥了重要作用&#xff0c;成为推动低空经济发展的重要力量。 无人机人才培养的重要性 随着无人机应用的不…

深度之眼(二十九)——神经网络基础知识(四)-循环神经网络

文章目录 一、 学习目标二、序列数据三、语言模型四、循环神经网络4.1 RNN的反向传播 五、门控循环单元-GNU5.1 候选隐藏状态 六、长短期记忆网络-LSTM七、回顾 一、 学习目标 二、序列数据 序列数据是常见的数据类型&#xff0c;前后数据通常具有关联性 三、语言模型 综合…

【技术杂谈】如何访问Github | 解决无法连接Github的问题

访问网页的过程 什么是域名&#xff1f;什么是IP地址&#xff1f;- 域名是网站的名称。 - IP地址是服务器在互联网上的逻辑地址。域名往往是固定的&#xff0c;但是IP地址很有可能是会改变的。计算机通过Host文件检查本地缓存是否有域名对应IP地址 Host文件路径 C:\Windows\Sy…

C#反射基本应用

1、反射 反射是.NET Framework的一个特性&#xff0c;它允许在运行时获取类型的信息以及动态创建对象&#xff0c;调用方法&#xff0c;以及访问字段和属性。 2、代码 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy…

Node.js path模块

在 Node.js 中&#xff0c;path 模块用于处理和转换文件路径。以下是一些常用的 path 模块方法及其说明&#xff1a; path.basename(path[, ext]) 返回路径中的最后一部分&#xff0c;即文件名。示例&#xff1a;const path require(path); console.log(path.basename(/foo/ba…

ShardingSphere分库分表+读写分离

ShardingSphere 是一个开源的分布式数据库中间件&#xff0c;它支持分库分表和读写分离的功能&#xff0c;可以有效地提高数据库的并发处理能力和数据存储能力。以下是关于 ShardingSphere 分库分表和读写分离的一些关键点&#xff1a; 1. **读写分离**&#xff1a;在 Shardin…