当前位置: 首页 > news >正文

OpenCV图像输入输出模块imgcodecs(imwrite函数的用法)

《OpenCV计算机视觉开发实践:基于Python(人工智能技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书

3.2.3  imwrite保存图片

函数imwrite可以用来输出图像到文件,其声明如下:

imwrite(filename, img[, params]) -> retval    

其中,参数filename表示需要写入的文件名,必须加上后缀,比如“123.png”。注意,你要保存图片为哪种格式,就带有相同格式的后缀;img表示Mat类型的图像数据,就是要保存到文件中的源图像数据;参数params表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),所以一般情况下不用写。

通常,使用此函数能保存8位单通道或3通道(具有“BGR”通道顺序)图像。16位无符号(CV_16U)图像可以保存为PNG、JPEG和TIFF格式。32位浮点(CV_32F)图像可以以PFM、TIFF、OpenEXR和Radiance HDR格式保存;3通道(CV_32FC3)TIFF图像将使用LogLuv高动态范围编码(每像素4字节)保存。另外,使用此函数可以保存带有alpha通道的PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道最后到达。完全透明的像素应该将alpha设置为0,完全不透明的像素应该将alpha设置为255/65535。如果格式、深度或通道顺序不同,就在保存之前使用convertTo和cvtColor进行转换,或者,使用通用文件存储I/O函数将图像保存为XML或YAML格式。

下面的示例演示如何创建BGRA图像,将其保存为PNG图像文件,以及如何设置自定义压缩参数。

【例3.4】  创建BGRA图像并将其保存到PNG文件

import cv2
import numpy as np
img=cv2.imread("cat.jpeg")
img_bgra=cv2.cvtColor(img,cv2.COLOR_BGR2BGRA)
print(img_bgra.shape)
print(img_bgra)
b, g, r ,a= cv2.split(img_bgra)
print(a)
print(a.shape)
a[int(a.shape[0]/2):,int(a.shape[1]/2):]=0
alpha = np.ones(b.shape, dtype=b.dtype)*0  #creating a dummy alpha channel image.
print(alpha)
alpha = alpha.astype(np.uint8)
img_bgra = cv2.merge((b, g, r, a))
print(img_bgra.shape)
cv2.imshow("BGRA", img_bgra)
cv2.imwrite("BGRA.png",img_bgra, [cv2.IMWRITE_PNG_COMPRESSION, 9])
cv2.waitKey(0)

在上述代码中,我们首先读取工程目录下的源图片cat.jpg,本例子输入一幅24位BGR真彩色图像,输出32位BGRA带透明通道的彩色图像。在输出前,对Alpha透明通道做了一些处理。源24位真彩色图像的左下角置为透明。在运行中查看BGRA四通道图片时,是无法查看到透明通道的,需要把图片保存下来,才能看到。

目前支持Alpha透明通道的图片封装格式为:

(1)PNG:支持透明效果。PNG可以为原图像定义256个透明层次,使得彩色图像的边缘能与任何背景平滑地融合,从而彻底地消除锯齿边缘。这种功能是GIF和JPEG没有的。

(2)gif:GIF的原义是“图像互换格式”,GIF文件的数据是一种基于LZW算法的连续色调的无损压缩格式。

(3)TIFF:标记图像文件格式(Tagged Image File Format,简写为TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像。它最初由Aldus公司与微软公司一起为PostScript打印开发。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。

(4)PSD:这是Photoshop图像处理软件的专用文件格式,文件扩展名是.psd,可以支持图层、通道、蒙板和不同色彩模式的各种图像特征,是一种非压缩的原始文件保存格式。扫描仪不能直接生成该种格式的文件。PSD文件有时容量会很大,但由于可以保留所有原始信息,在图像处理中对于尚未制作完成的图像,选用PSD格式保存是最佳的选择。

运行工程,结果如图3-5所示。此时在工程目录下多了一个BGRA.png文件。这里不保存下来查看的话,在程序运行中展示并看不出差异。保存图片时,要保存为png格式的图片,因为png或tiff格式的文件即为BGRA四通道色彩空间的图像文件形式。另外,保存图片时,imwrite 的第三个参数是[cv2.IMWRITE_PNG_ COMPRESSION, 9],它实现了图片压缩功能,其中9代表图片保存时的压缩程度,有0~9这个范围的10个等级,数字越大表示压缩程度越高。最终运行结果如图3-5所示。

图3‑5

相关文章:

  • C#里第一个WPF程序
  • 192.168.145.129
  • 42、填写表单后跳转至其他页面,返回时需保留已填数据
  • Axure项目实战:智慧运输平台后台管理端-司机管理(中继器)
  • 4G专网:企业数字化转型的关键通信基石
  • Bootstrap5 折叠
  • React编程模型:ReactX(Rx)深度解析
  • 【硬件视界11】输入设备进化史:键盘与鼠标技术
  • 人月神话:如何有效的避免Bug的产生
  • Scala基础知识6
  • C语言贪吃蛇项目——第二部分绘制菜单和初始界面
  • MySQL基础知识点总结
  • python高效环境管理工具UV详解:性能与功能对比分析
  • GLPI 未授权SQL注入漏洞(CVE-2025-24799)
  • Apache httpclient okhttp(1)
  • 国内外网络安全政策动态(2025年3月)
  • 记录一次使用datax一次性导入多张表的经验
  • LeeCode 5. 最长回文子串
  • saltstack自动化运维工具安装部署以及常用模块
  • 学透Spring Boot — 007. 七种配置方式及优先级
  • 抚顺网站设计/西安网站seo费用
  • 陕西有哪些公司是网站建设/专业制作网页的公司
  • 网页无法访问 wordpress/湖南正规关键词优化首选
  • 网站开发的投标案例/专业seo网站优化推广排名教程
  • 上海网站编辑招聘/数字营销平台有哪些
  • 网站建设服务器一般多少钱/百度热搜榜在哪里看