《Java图像处理:基于OpenCV与JVM》 ——1.5 学习OpenCV矩阵对象基础知识

举报
华章计算机 发表于 2020/02/20 19:44:05 2020/02/20
【摘要】 本节书摘来自华章计算机《Java图像处理:基于OpenCV与JVM》 —— 书中第1章,第1.5节,作者是[法] 尼古拉斯·莫德奇克(Nicolas Modrzyk) ,魏 兰 潘婉琼 译 。

1.5 学习OpenCV矩阵对象基础知识

  问题定义

Mat(矩阵)对象是OpenCV框架的核心,掌握它你可以更加得心应手地使用OpenCV。

  解决方法

让我们通过几个核心示例来看看如何创建矩阵对象并查看它们的内容。

  工作原理

此攻略需要你完成与前几节相同的配置。

要创建一个每个“点”只有一个通道的简单矩阵,通常用到Mat类中以下三个静态函数中的一个:zeros,eye,ones。

通过表1-2可以更清楚地看到这三个函数的用途。

表1-2 创建单像素单通道矩阵的静态函数

image.png

 

如果你之前使用过OpenCV(如果还没有,请相信我),你会记得CV_8UC1是OpenCV对8位无符号字的称呼,每个像素一个通道,所以最终有3×3即9个值。

正如你所料,它的“堂兄”CV_8UC3给每个像素分配了三个通道,因此1×1的Mat对象就具有三个值。在处理RGB图像时你将经常使用三通道的Mat。它也是加载图像时的默认格式。

第一个例子简单地显示了加载每个像素为单通道的Mat对象的三种方法,以及加载每个像素包含三个通道的Mat对象的一种方法。

 image.png

image.png

最后一个Mat对象mat4每个像素包含三个通道。如果尝试打印该对象的信息,你将看到一个包含三个0的数组。

CV_8UC1和CV_8UC3是两种常见的像素格式,在CvType类中还定义了许多其他的像素格式。

当进行矩阵之间的计算时,可能还需要每个通道为浮点数的矩阵。以下是实现方式:

 image.png

输出矩阵:

 image.png

在许多情况下,你可能并不会从头创建矩阵,而是从文件中加载图像。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。