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

OpenCV(三):保存文件

保存图像

函数定义

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

参数说明

参数名类型说明
filenamestr要保存的文件路径,例如 "output.jpg""./result.png"
imgnumpy.ndarray要保存的图像(通常是 cv2.imread() 或图像处理的结果)
params可选参数列表保存时的附加参数(如压缩质量、PNG 压缩级别等)

返回值

  • True:保存成功
  • False:保存失败(如路径错误、无权限等)

常见参数(params

文件类型参数示例说明
JPEG[cv2.IMWRITE_JPEG_QUALITY, 90]图像质量(0~100,默认95)
PNG[cv2.IMWRITE_PNG_COMPRESSION, 3]压缩等级(0~9,默认3)
WebP[cv2.IMWRITE_WEBP_QUALITY, 80]图像质量(0~100)
TIFF[cv2.IMWRITE_TIFF_COMPRESSION, 1]TIFF 压缩方式

对比总结

格式特点是否支持透明压缩类型参数
JPG最常用,体积小,轻微失真有损cv2.IMWRITE_JPEG_QUALITY
PNG无损,适合图形/透明图无损cv2.IMWRITE_PNG_COMPRESSION
WEBP高压缩率,支持透明有损 / 无损cv2.IMWRITE_WEBP_QUALITYcv2.IMWRITE_WEBP_LOSSLESS
TIFF高精度,科研常用可选多种压缩方式cv2.IMWRITE_TIFF_COMPRESSION
BMP无压缩,简单格式无压缩无参数

示例

示例1:保存JPEG图像

import cv2# 读取图像
img = cv2.imread("input.jpg")# 保存为不同质量的JPEG
cv2.imwrite("output_95.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 95])
cv2.imwrite("output_50.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 50])print("图像保存成功!")

示例2:保存PNG并设置压缩级别

import cv2img = cv2.imread("input.jpg")# 压缩等级0(无压缩)
cv2.imwrite("output_no_compress.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 0])# 压缩等级9(最高压缩)
cv2.imwrite("output_high_compress.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])

示例3:保存为 WebP 格式(高压缩、支持透明)

import cv2# 读取一张图片
img = cv2.imread("input.jpg")# WebP质量范围:0~100,值越高质量越好,文件越大(默认80)
cv2.imwrite("output_webp_80.webp", img, [cv2.IMWRITE_WEBP_QUALITY, 80])
cv2.imwrite("output_webp_20.webp", img, [cv2.IMWRITE_WEBP_QUALITY, 20])print("WebP 保存完成!")

示例4:保存为 TIFF 格式(适合高精度图像)

import cv2
import numpy as np# 创建示例图像(16位灰度)
gray16 = np.random.randint(0, 65535, (480, 640), dtype=np.uint16)# 保存为 TIFF(默认不压缩)
cv2.imwrite("output_default.tiff", gray16)# 指定压缩方式(例如 LZW 压缩)
cv2.imwrite("output_tiff_lzw.tiff", gray16, [cv2.IMWRITE_TIFF_COMPRESSION, 5])print("TIFF 保存完成!")

说明:

参数值含义
1无压缩 (None)
5LZW 压缩(无损)
7JPEG 压缩(有损)
32946Deflate 压缩
8PackBits 压缩

保存视频

函数定义

cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])

参数说明

参数类型说明
filenamestr输出视频文件路径,例如 "output.mp4"
fourccint编码格式标识(FourCC 编码)
fpsfloat帧率(每秒帧数)
frameSize(width, height)每帧的宽高
isColorbool是否为彩色视频(默认为True)

常见 FourCC 编码

编码说明常用容器
'XVID'常见AVI编码.avi
'MJPG'Motion JPEG.avi
'MP4V'MPEG-4视频编码.mp4
'H264'H.264编码(需系统支持).mp4
'avc1'H.264兼容编码.mp4

示例1:从摄像头保存视频(mp4v)

import cv2cap = cv2.VideoCapture(0)  # 打开摄像头
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (640, 480))while True:ret, frame = cap.read()if not ret:breakout.write(frame)  # 写入一帧cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
out.release()
cv2.destroyAllWindows()

示例2:从摄像头保存视频(h264)

import cv2cap = cv2.VideoCapture(0)  # 打开摄像头
fourcc = cv2.VideoWriter_fourcc(*'H264')
out = cv2.VideoWriter('output_h264.mp4', fourcc, 25.0, (640, 480))while True:ret, frame = cap.read()if not ret:breakout.write(frame)  # 写入一帧cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
out.release()
cv2.destroyAllWindows()

保存结构化数据(XML / YAML)

函数定义

cv2.FileStorage(filename, flags)

常见标志

标志说明
cv2.FILE_STORAGE_WRITE写模式
cv2.FILE_STORAGE_READ读模式
cv2.FILE_STORAGE_APPEND追加模式

示例:保存与读取 YAML 文件

import cv2
import numpy as np# 创建数据
matrix = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
scalar = 42# 保存到文件
fs = cv2.FileStorage("data.yaml", cv2.FILE_STORAGE_WRITE)
fs.write("Matrix", matrix)
fs.write("Scalar", scalar)
fs.release()# 从文件读取
fs = cv2.FileStorage("data.yaml", cv2.FILE_STORAGE_READ)
mat = fs.getNode("Matrix").mat()
val = fs.getNode("Scalar").real()
fs.release()print("读取的Matrix:\n", mat)
print("读取的Scalar:", val)

总结

功能API文件类型备注
保存图像cv2.imwrite()JPG、PNG、TIFF、WEBP等支持压缩参数
保存视频cv2.VideoWriterAVI、MP4等需指定编码器和帧率
保存结构化数据cv2.FileStorageXML、YAML适用于矩阵、参数保存
http://www.dtcms.com/a/453673.html

相关文章:

  • 写一个shel脚本 完全备份 然后每天增量备份 以及计划任务 一周 mysql 数据库
  • 三好街做网站的微信企业网站源码下载
  • 车载诊断架构 --- 车载ECU故障类型详解(中)
  • 网站建设实训记录wordpress显示用户角色
  • 无人机系统耗电,低功耗管理问题解决方法(腾讯元宝)
  • 响应式网站建设公司好的建设网站公司
  • 刘火良 FreeRTOS内核实现与应用之13——内存管理、中断管理
  • 从“拉取请求“到“合并请求“:一个有趣的术语翻译现象
  • 第七章 面向对象编程(基础部分)
  • 联想M7400黑白激光打印机显示纸盒无纸反复卡纸在硒鼓下面维修一例
  • Redis 提高缓存命中率指南
  • 建设部网站工程设计收费标准怎么知道公司网站是哪个公司做的
  • 一、通用的FPGA开发流程介绍
  • Java Spring “核心基础”面试清单(含超通俗生活案例与深度理解)
  • 公司网站设计需要多少钱wordpress vip服务积分
  • 【吕口】知呼依茶-服务平台系统方案
  • YOLO入门教程(番外):目标检测的一阶段学习方法
  • 妇产科网站建设沧州微网网络信息有限公司
  • 北京房产网站建设濮阳网站建设专家团队
  • OpenCV 库函数
  • 信息发布网站怎么做如何做网站上抓视频
  • 【深度学习计算机视觉】10:转置卷积实战进阶——破解棋盘效应与工业级应用
  • ai调用excel整理板厚,零件,预计板耗信息保存为json
  • PyCharm 2025:最新图文教程!
  • Docker 实战教程(7) | 镜像管理和仓库操作
  • 百度快照抓取的是网站哪里的内容建站公司怎么接单
  • 江苏省建设工程竣工备案网站网站结构优化包括哪些
  • open manus实战:生成一个贪吃蛇游戏
  • 制作销售网站清浦网站建设
  • 建站为应用技术长沙有实力的关键词优化价格