《Java图像处理:基于OpenCV与JVM》 ——1.6 从文件加载图像

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

1.6 从文件加载图像

  问题定义

加载图像文件,并把它转换为Mat对象以进行数字操作。

  解决方法

OpenCV有一个名为imread的简单函数,用以从文件中读取图像。它通常只需要图像在本地文件系统上的文件路径,但同时这个函数还带有一个缺省的类型参数。让我们看看如何使用不同形式的imread。

  工作原理

imread函数位于Imgcodecs类的同名包中。

它的标准用法是简单地给出文件的路径。假设你已从Google搜索下载了猫咪图像并将它存储在images/kittenjpg路径下(如图1-8所示),如下代码给出了如何加载这个图像:

 image.png

image.png

图1-8 奔跑的猫咪

如果OpenCV可以找到并正确加载猫咪图像,则输出以下消息到控制台中:

 image.png

需要注意的是,如果找不到该文件,OpenCV也不会抛出任何异常或者报告任何错误信息,而是显示加载的Mat对象为空,所以没有行和列:

 image.png

你可以根据自己的编码方式,尝试封装检查Mat大小的代码,以确保可以找到图像并正确解码。

这个函数也可以加载灰度图像(如图1-9所示),这是通过传递另外一个参数控制的。

 image.png

 image.png

图1-9 灰度加载

这个参数取自同一个Imgcodecs类。

在这里,我们使用IMREAD_GRAYSCALE将图像强制转换为灰度图像并加载到Mat对象中。

除了使用IMREAD_GRAYSCALE外,还可以向imread函数传递其他选项来得到特定的处理通道和图像深度,其中最有用的如表1-3所示。

表1-3 图像读取选项

image.png   

image.png

 

图1-10显示了使用REDUCED_COLOR_8加载得到的图像。

 image.png

图1-10 加载减小尺寸的图像

你可能已经注意到,使用imread加载图像时不需要提供图像的格式。OpenCV会根据文件的扩展名以及文件中的二进制信息自动完成相应的图像解码工作。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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