| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> OpenCV中 Mat 的使用方法 -> 正文阅读 |
|
[人工智能]OpenCV中 Mat 的使用方法 |
Mat 是 OpenCV 中的数据类型,储存矩阵形式的数据,构造 Mat 类型的方法有很多,都是通过 Mat 这个构造函数进行实现(Mat 也是构造 Mat 数据类型的函数)。 本文主要介绍 Mat 的构造方法和 Mat 类的访问以及相关的数据类型。 文章目录1 传统的函数构造
如果想要初始化数据:
使用 Scalar(0) 将所有元素初始化为零,如果为多通道,使用 Scalar::all()。 1.1 关于 CV_< bits >< type >C(< channels >) 的补充该参数将数据类型、位计数和通道数统一到一个宏中,通常使用的宏模式为:
其中:
< type > 可以替换为:
< channels > 表示的是每一个元素的通道数,比如一个 3 x 3 的 Mat 类型的矩阵,通道数为 3,假如元素初始化为 1,那么这个矩阵可以写成 [(1, 1, 1), (1, 1,1), (1, 1, 1); (1, 1, 1), (1, 1,1), (1, 1, 1); (1, 1, 1), (1, 1,1), (1, 1, 1)],其中每一个元素都是一个向量,示例程序如下:
程序输出如下:
2 使用已知的向量构造 Mat 类型创建一个立方体(三维数组),边长为 10, 类型为双精度(64位)的双通道元素,并用 1.0 初始化所有值:
实际上,计算机只能输出 2 维的矩阵数据,因此此处的 3 维数据虽然可以创建,但不能如上一个程序一样使用 cout 输出。 3 使用 create 来创建或更改大小和类型
4 创建 ROI(感兴趣区域)创建一个 Mat 类,它是另一个 Mat 类的一部分,称之为感兴趣区域(Region of Interest, ROI)。当只需要访问图片的一部分区域时,可以使用这样的方式。比如需要对图像的一部分进行滤波,创建一个包含 50 x 50 像素的正方形 ROI Mat 类:
第一个参数是想要处理的图像,第二个参数是使用 Rect() 进行区域约束,前两个数据分别表示起点的横坐标和纵坐标(以原图象 image 的左上角为起点,向下和向右为正)。
5 选择一个 Mat 中的行或列选择一行或一列:
选择多行或多列:
6 访问 Mat 类中的元素6.1 at 方法at 是一个函数模板,可以用来访问 Mat 类中的一个元素。
OpenCV 中创建的 Vec 类型如下(参考博文):
6.2 begin/end 方法和 forEach 方法针对这三种方法,使用以下代码实现相同目标,它们都通过将每个像素的值除以 5,使图像变得更暗。
通过 begin 和 end 函数使用类似于 STL 的迭代器:
使用 forEach 函数(与 lambda)一起使用
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/8 4:35:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |