《Java图像处理:基于OpenCV与JVM》 ——1.7 保存图像到文件

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

1.7 保存图像到文件

  问题定义

使用OpenCV保存图像。

  解决方法

OpenCV有一个同imread函数相对应的用来写入文件的函数,函数名是imwrite,也在Imgcodecs类中定义。通常情况下,该函数仅使用本地文件系统里指向图像存储位置的文件路径作为参数,但它也可以使用一些参数来修改图像存储的方式。

  工作原理

imwrite函数同imread函数工作原理相似,不同之处是它除了路径,还需要一个Mat对象来存储图像。

第一个代码片段简单地实现将以彩色形式加载的猫咪图像存储到文件中。

 image.png


图1-11展示了输出的.jpg图片的内容。

 image.png

图1-11 磁盘上的JPEG格式图像

现在,当保存Mat对象时,你也可以仅通过使用一个不同的扩展名来改变存储格式。例如,想要保存为便携式网络图形(Portable Network Graphic,PNG)格式,仅需调用imwrite函数时,使用一个不同的扩展名即可。

 image.png

不需要进行图像编码和令人发狂的字节操作,你输出的文件确实是PNG格式。

可以向imwrite函数传递参数,最常见的参数是压缩参数。

例如,按照官方文档:

对于JPEG,可以使用CV_IMWRITE_JPEG_QUALITY参数,参数值范围为0~100(值越大图像质量越高)。默认值是95。

对于PNG,可以使用0~9作为压缩程度的参数值,值越大表示图像越小且压缩时间越长。默认值是3。

可以通过使用另一个叫作MatOfInt的OpenCV对象来实现使用压缩参数压缩输出文件,MatOfInt是一个整型矩阵,或者是一个更简单的形式,即数组。

 image.png

上段代码实现PNG图片压缩。同时,通过查看文件大小,实际上你可以发现这个PNG文件大小至少减少了10%。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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