OpenCV 写图像也有讲究,取经之路第 5 天
本篇文章与你一起学一个方法 imwrite
。
OpenCV 保存图像
读取图像之后,对应的就是保存图像,在 OpenCV 里面,保存图像也有讲究。
在 C++语言里面,OpenCV 函数结构如下:
参数一: const String& filename 表示需要写入的文件名,必须要加上后缀,比如
test.jpg
;参数二:InputArray img 表示 Mat 类型的图像数据;
参数三:const std::vector& params 表示为特定格式保存的参数编码,它有一个默认值 std::vector< int >(),所以一般情况下不用写。
以上内容,在 Python 中同样适用,Python 的语法格式如下。
参数一:保存的路径及文件名;
参数二:图像矩阵;
参数三:针对特定的格式的存盘标识,对于 JPEG,其表示的是图像的质量,用 0-100 的整数表示,默认为 95。对于 PNG,第三个参数表示的是压缩级别。
存盘标识具体内容如下:
cv2.CV_IMWRITE_JPEG_QUALITY
设置图片格式为.jpeg 或者.jpg 的图片质量,其值为 0---100(数值越大质量越高),默认 95;cv2.CV_IMWRITE_WEBP_QUALITY
设置图片的格式为.webp 格式的图片质量,值为 0--100;cv2.CV_IMWRITE_PNG_COMPRESSION
设置.png 格式的压缩比,其值为 0--9(数值越大,压缩比越大),默认为 3。
测试一段代码如下,读取图片,保存图片。
成功保存一张灰度图。
还有一个可以查阅一下上面两张图的属性,在查看一些图像上的属性数据。
对于 jpg
格式的文件,imwrite 中第三个参数是设置图片质量,范围从 1~100,默认 95,越大画质越好,文件越大。
整理就是质量越高,图片越清楚,质量越低,图片越模糊,但是图片占用空间变小。
其余的用法可以继续参考 官方手册 学习。
在检索第三方资料的时候,发现很多博主都写了下面一句话。
橡皮擦实际试了一下,发现并不是 Long,如果有博友发现是其它原因,欢迎在评论区交流。(而且在 Python3 中已经移除掉 long 类型了)
imwrite 的坑
在学习过程中,imwrite 还真存在两个需要特别注意的地方,第一个就是中文路径问题,这个在很多编程场景中都存在。
先说读取,读取的时候也存在该问题。
写入文件解决中文路径的问题,在测试的时候发现的第二个问题,如果目录文件不存在,OpenCV 不会自动创建目录。
今天的 OpenCV 尾声
1 个小时又过去了,对 Python OpenCV 图像写入相关的知识点,你掌握了吗?
空闲之余,可以订阅橡皮擦的爬虫百例课程学习爬虫知识。
**想学 Python 爬虫,可以订阅橡皮擦专栏哦~
** 🈲🈲🈲🈲 点击发现惊喜 🈲🈲🈲🈲
博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/3f96cf80bc63132648ba3edd8】。文章转载请联系作者。
评论