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

这篇具有很好参考价值的文章主要介绍了python-opencv第二期:imwrite函数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

正文内容:

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

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_INTERVAL JPEG重启间隔,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:那么多,但常用的其实没几个) 

③实例操作:

1、普通版温蒂姐妹:

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

2、无损版温蒂姐妹:

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

3、战损版温蒂姐妹:

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

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

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

5、多参数演示:

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

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

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

cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉cv2.imwrite,python,opencv,计算机视觉,opencv,python,计算机视觉

参考文章:OpenCV笔记1:用imwrite函数来保存图片文章来源地址https://www.toymoban.com/news/detail-783095.html

到了这里,关于python-opencv第二期:imwrite函数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python-opencv第一期:imread函数详解

    概要:众 嗦粥之 所周知,在如今计算机视觉( Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。本篇博客将介绍python-opencv库中较为简单的

    2024年02月09日
    浏览(29)
  • Python-OpenCv中的cv2.VideoCapture()类

    cv2.VideoCapture()具有两个功能,一是可以完成摄像头的初始化,打开摄像头;二是可以完成视频文件的初始化。 参数说明:         capture :要打开的摄像头         index :摄像头的设备索引,对于笔记本电脑来说,为0时,一般打开的是电脑的内置摄像头,为1时,打开的为外

    2024年01月25日
    浏览(26)
  • 解决python-opencv:(-215:Assertion failed) _img.empty() in function ‘cv::imwrite‘在将视频分成帧图片,写入时出现的问题

    最近在搞视频检测问题,在用到将视频分帧保存为图片时,图片可以保存,但是会出现(-215:Assertion failed) !_img.empty() in function \\\'cv::imwrite\\\'问题而不能正常运行,在检查代码、检查路径等措施均无果后,了解了视频分帧的原理后,才解决了问题,就这一个问题,解决了两天才解决

    2024年02月15日
    浏览(37)
  • 【Python/Opencv】图像权重加法函数:cv2.addWeighted()详解

    在OpenCV图像加法cv2.add函数详解详细介绍了图像的加法运算。 除了这种加法外,OpenCV还提供了带权重的加法,即两副图像的像素通道值相加时各自按一定的权重比例取值来相加。 假设有2个图像矩阵src1和src2,在两个图像融合时,各自的权重分别为alpha和beta,则二者融合后的目

    2024年02月15日
    浏览(56)
  • opencv(4): cv2.imwrite()图像的保存

    语法格式:retval = cv2.imwrite(filename, image [, paras]) 参数说明: filename :代表文件名的字符串。文件名必须包含图像格式,例如.jpg,.png等。 image :图像数据矩阵 paras: 不同编码格式的参数,可选项 cv2.CV_IMWRITE_JPEG_QUALITY :设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95)

    2024年02月01日
    浏览(26)
  • 详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

    有的时候我们需要将两张图片在alpha通道进行混合,比如深度学习数据集增强方式MixUp。OpenCV的 addWeighted 提供了相关操作,此篇博客将详细介绍这个函数,并给出代码示例。🚀🚀 o u t p u t I m g = s a t u r a t e ( α ∗ i n p u t I m g 1 + β ∗ i n p u t I m g 2 + γ ) rm outputImg=saturate( al

    2024年02月06日
    浏览(54)
  • 关于OpenCV中cv2.imwrite保存的图片是全黑色的解决方案

    原因:image图片是0-255,而imwrite保存图片的时候把图片标准化了,也就变为0-1,对于这个问题,只需要修改一下imwrite的输入就好,也就是括号后半部分那个参数*255,如下: 注意:括号里边的前半部分是自己起的文件名,后半部分“img_light”改成你自己的图像名。 比如我读入

    2024年02月16日
    浏览(31)
  • 【Python】【Opencv】形态学操作cv2.morphologyEx()函数详解和示例,实现腐蚀、膨胀、闭和开等运算

    常用的形态学操作如腐蚀、膨胀、开运算、闭运算等,可以帮助我们解决一下图像不连接或消除图像中某些不想要的连接,对于图像处理使用方便,效果明显。本文通过示例对这些功能和效果进行演示,以帮助大家理解和使用。 cv2.morphologyEx 是 OpenCV 中的一个函数,用于执行

    2024年02月22日
    浏览(37)
  • Opencv cv2.putText 函数详解

    具体函数如下: 函数源码如下: 对应的参数如下: 参数 具体表述 image 绘制的图像 text 绘制的文本 org 文本在图像中显示的坐标,用元组表示格式为(X坐标,Y坐标) font 文本字体类型,值可以为 FONT_HERSHEY_SIMPLEX 、 FONT_HERSHEY_PLAIN fontScale 字体比例因子乘以font-specific基本大小 c

    2024年02月09日
    浏览(47)
  • cv2保存图片类型错误执行报错cv2. error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function ‘imwrite‘ - img i

    硬件环境(Ascend/GPU/CPU): GPU 软件环境: – MindSpore 版本: 1.7.0 执行模式: 静态图(GRAPH) – Python 版本: 3.7.6 – 操作系统平台: linux 将优化好的图像用cv2进行图片保存,由于没有将tensor转换为numpy,导致cv2.imwrite运行失败。 adversarial_tensor, mask_tensor = adversarial.train(attack_method) cv2.imwrit

    2024年02月17日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包