我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python-opencv第二期:imwrite函数详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python-opencv第二期:imwrite函数详解

概要:众嗦粥之所周知,在如今计算机视觉(Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而opencv作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。本文就将介绍其中一个较为基础的函数——imwrite函数,将我们编辑后的图片矩阵以文件的形式储存起来,与我们第一期的imread函数形成呼应关系。(唱山歌(bushi)

本文依旧是请出“饥荒”中的角色“温蒂姐妹”作为我们今天的实例操作对象(温蒂:我的花去哪了),如下图所示。话不多说,我是Kamen Black君,马上开始今天的学习。

201bd4c6cf90495aa32a1f22efa10d00.png

正文内容:

56b8d441e6d74b53b6c2f8848c71de66.jpeg

print("祝大家每天快乐,love and peace!")

①使用前准备:

首先依旧是调用opencv的第三方库,作为我们使用imwrite函数的大前提。

import cv2

②语法说明:

cv2.imwrite(filename,img,params)

其中,filename的数据类型是const String&,这里要填入的参数是我们选择来要保存编辑后图片的路径,要注意的是,要加上诸如jpg、png的后缀,不然可是会有很可怕的惩罚的哦(报错);

           img的数据类型是array(即数组类型),这里一般情况下要填入的是8位单通道或3通道(带有BGR通道顺序)图像,但是凡事都有例外(规则都是用来打破的!),如下所示:

imwrite函数是基于文件扩展名选择图像的格式。通常,使用此功能只能保存8位单通道或3通道(带有BGR通道顺序)图像,但有以下例外:

▶对于PNG,JPEG2000和TIFF格式,可以保存16位无符号(CV_16U)图像。


▶32位浮点(CV_32F)图像可以保存为PFM,TIFF,OpenEXR和Radiance HDR格式; 使用LogLuv高动态范围编码(每像素4个字节)保存3通道(CV_32FC3)TIFF图像。


▶可以使用此功能保存带有Alpha通道的PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道最后。完全透明的像素应该将alpha设置为0,完全不透明的像素应该将alpha设置为255/65535。


如果格式,深度或通道顺序不同,请在保存之前使用Mat :: convertTo和cv :: cvtColor进行转换。或者,使用通用FileStorage I / O函数将图像保存为XML或YAML格式。

             params 的数据类型是const int&,可以不进行写入(有默认状态),也可以多个写入,具体格式请见实例操作部分。这里要填入的参数是用来表示图片要被特定格式保存的,有些参数也可以用相应的整数来进行表示,如下所示:

params的分类与作用
cv2.IMWRITE_JPEG_QUALITY对于JPEG,它可以是从0到100的质量(越高越好)。默认值为95。
cv2.IMWRITE_JPEG_PROGRESSIVE启用JPEG功能,0或1,默认为False。
cv2.IMWRITE_JPEG_OPTIMIZE启用JPEG功能,0或1,默认为False。
cv2.IMWRITE_JPEG_RST_INTERVALJPEG重启间隔,0 - 65535,默认为0 - 无重启。
cv2.IMWRITE_JPEG_LUMA_QUALITY单独的亮度质量等级,0 - 100,默认为0 - 不使用。
cv2.IMWRITE_JPEG_CHROMA_QUALITY单独的色度质量等级,0 - 100,默认为0 - 不使用。
cv2.IMWRITE_PNG_COMPRESSION对于PNG,它可以是从0到9的压缩级别。值越高意味着更小的尺寸和更长的压缩时间。如果指定,则策略更改为IMWRITE_PNG_STRATEGY_DEFAULT(Z_DEFAULT_STRATEGY)。默认值为1(最佳速度设置)。
cv2.IMWRITE_PNG_STRATEGY其中一个品种:ImwritePNGFlags,默认为IMWRITE_PNG_STRATEGY_RLE。
cv2.IMWRITE_PNG_BILEVEL二进制级别PNG,0或1,默认为0。
cv2.IMWRITE_PXM_BINARY对于PPM,PGM或PBM,它可以是二进制格式标志,0或1.默认值为1。
cv2.IMWRITE_EXR_TYPE
cv2.IMWRITE_WEBP_QUALITY

覆盖EXR存储类型(默认为FLOAT(FP32))

对于WEBP,它可以是1到100的质量(越高越好)。默认情况下(不带任何参数),如果质量高于100,则使用无损压缩。

cv2.IMWRITE_PAM_TUPLETYPE对于PAM,将TUPLETYPE字段设置为为格式定义的相应字符串值。
cv2.IMWRITE_TIFF_RESUNIT对于TIFF,用于指定要设置的DPI分辨率单位; 请参阅libtiff文档以获取有效值。
cv2.IMWRITE_TIFF_XDPI对于TIFF,用于指定X方向DPI。
cv2.IMWRITE_TIFF_YDPI对于TIFF,用于指定Y方向DPI。
cv2.IMWRITE_TIFF_COMPRESSION对于TIFF,用于指定图像压缩方案。请参阅libtiff以获取与压缩格式对应的整数常量。注意,对于深度为CV_32F的图像,仅使用libtiff的SGILOG压缩方案。对于其他支持的深度,可以通过此标志指定压缩方案; LZW压缩是默认值。
cv2.IMWRITE_JPEG2000_COMPRESSION_X1000对于JPEG2000,用于指定目标压缩率(乘以1000)。该值可以是0到1000.默认值是1000

 (小声BB:那么多,但常用的其实没几个) 

③实例操作:

普通版温蒂姐妹:

>>> import cv2>>> img=cv2.imread("F://wendy.png")>>> cv2.imwrite("F://1.jpeg",img)True

6cde8861276b4b8ea722ff48d0141f43.jpeg

无损版温蒂姐妹:

>>> cv2.imwrite("F://4.jpeg",img,[cv2.IMWRITE_JPEG_QUALITY,100])True

3b9aa501dba4485a8873eead163140ad.jpeg

战损版温蒂姐妹:

>>> cv2.imwrite("F://2.jpeg",img,[cv2.IMWRITE_JPEG_QUALITY,10])True

5506883d5ae54521af4c0acedf6c6b0b.jpeg

超高校级战损版温蒂姐妹:

>>> cv2.imwrite("F://3.jpeg",img,[cv2.IMWRITE_JPEG_QUALITY,2])True

a1f4acd104e94721b19488038ed4dd51.jpeg

多参数演示:

>>> cv2.imwrite("F://5.jpeg",img,[cv2.IMWRITE_JPEG_LUMA_QUALITY,10,cv2.IMWRITE_JPEG_QUALITY,100])True

954871c634a0431195a5fdb76462729b.jpeg

>>> cv2.imwrite("F://6.jpeg",img,[cv2.IMWRITE_JPEG_QUALITY,100,cv2.IMWRITE_JPEG_LUMA_QUALITY,10])True

eb901841e9f140f9a9ce66548d97921c.jpeg

通过上面两个栗子例子,我们可以得出结论:如果存在冲突的情况,位于后端的参数设置占据主导地位。可能就是所谓的后来者居上吧。

结语: 好了以上就是所有的内容,希望大家多多关注,点赞,收藏,这对我有很大的帮助。国康家安,大家下次再见喽!!!溜溜球~~

26d53210a1ce44f293c2d4a2ded15e82.jpeg7cf5685363524cf89f3e960333b03482.jpeg

参考文章:OpenCV笔记1:用imwrite函数来保存图片

来源地址:https://blog.csdn.net/m0_55320151/article/details/127012570

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python-opencv第二期:imwrite函数详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录