《Java图像处理:基于OpenCV与JVM》 ——1.6 从文件加载图像
1.6 从文件加载图像
问题定义
加载图像文件,并把它转换为Mat对象以进行数字操作。
解决方法
OpenCV有一个名为imread的简单函数,用以从文件中读取图像。它通常只需要图像在本地文件系统上的文件路径,但同时这个函数还带有一个缺省的类型参数。让我们看看如何使用不同形式的imread。
工作原理
imread函数位于Imgcodecs类的同名包中。
它的标准用法是简单地给出文件的路径。假设你已从Google搜索下载了猫咪图像并将它存储在images/kittenjpg路径下(如图1-8所示),如下代码给出了如何加载这个图像:
图1-8 奔跑的猫咪
如果OpenCV可以找到并正确加载猫咪图像,则输出以下消息到控制台中:
需要注意的是,如果找不到该文件,OpenCV也不会抛出任何异常或者报告任何错误信息,而是显示加载的Mat对象为空,所以没有行和列:
你可以根据自己的编码方式,尝试封装检查Mat大小的代码,以确保可以找到图像并正确解码。
这个函数也可以加载灰度图像(如图1-9所示),这是通过传递另外一个参数控制的。
图1-9 灰度加载
这个参数取自同一个Imgcodecs类。
在这里,我们使用IMREAD_GRAYSCALE将图像强制转换为灰度图像并加载到Mat对象中。
除了使用IMREAD_GRAYSCALE外,还可以向imread函数传递其他选项来得到特定的处理通道和图像深度,其中最有用的如表1-3所示。
表1-3 图像读取选项
图1-10显示了使用REDUCED_COLOR_8加载得到的图像。
图1-10 加载减小尺寸的图像
你可能已经注意到,使用imread加载图像时不需要提供图像的格式。OpenCV会根据文件的扩展名以及文件中的二进制信息自动完成相应的图像解码工作。
- 点赞
- 收藏
- 关注作者
评论(0)