【OpenCV 例程 300篇】253. 多帧图像(动图)的读取与保存

『youcans 的 OpenCV 例程300篇 - 总目录』


【youcans 的 OpenCV 例程 300篇】253. 多帧图像(动图)的读取与保存


1. 多帧图像(动图)

多帧图像是将多幅图像或帧数据保存在单个文件中,也称为多页图像或图像序列,主要用于对时间或场景上相关图像集合进行操作的场合。例如,时间序列图像是动态图像(动图),可以形成简单的动画效果; 计算机X线断层扫描图像 (CT)是空间序列图像。常用的多帧图像格式有 GIF、PNG、TIFF。


2. 多帧图像读取函数 cv.imreadmulti

函数 cv.imreadmulti() 用于从指定的多帧图像文件中读取多幅图像。

函数说明:

cv.imreadmulti(filename[, mats=None, flags=IMREAD_ANYCOLOR]) -> retval, mats

cv.imreadmulti(filename, start, count[, mats=None, flags=IMREAD_ANYCOLOR]) -> retval, mats

参数说明:

  • filename:读取多帧图像的文件路径和文件名
  • mats:返回值,读取的图像文件向量,列表类型,列表元素为二维Numpy数组
  • flags:图像读取模式,可选项,默认为 IMREAD_ANYCOLOR
    • IMREAD_COLOR(1):始终将图像转换为 3 通道BGR彩色图像,默认方式
    • IMREAD_GRAYSCALE(0):始终将图像转换为单通道灰度图像
    • IMREAD_UNCHANGED(-1):按原样返回加载的图像(使用Alpha通道)
    • IMREAD_ANYDEPTH(2):在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位
    • IMREAD_ANYCOLOR(4):以任何可能的颜色格式读取图像
  • start:开始读取的帧索引,即跳过此前的图像帧
  • count:读取图像帧的页数
  • retval:返回值,读取成功标志,布尔值

注意事项:

  1. 读取多帧图像文件的返回值 mats 是列表(list)类型,列表元素是二维 Numpy数组,即每个列表元素 mats[i] 是一幅二维图像。

【例程】多帧图像(动图)的读取

本例程示例多帧图像(动图)的读取。

"""
200 OpenCV examples by youcans / OpenCV 例程 200 篇
Copyright: 2022, Shan Huang, youcans@qq.com
"""# 【0108】多帧图像(动图)的读取和保存
import cv2 as cv
from matplotlib import pyplot as pltif __name__ == '__main__':# 读取多帧图像文件imgMulti = cv.imreadmulti("../images/imgList.tiff")  # 读取多帧图像文件print("len(imgList): ", len(imgList))  # imgList 是列表# 显示多帧图像文件for i in range(len(imgList)):print("\timgList[{}]: {}".format(i, imgList[i].shape))  # imgList[i] 是 Numpy 数组cv.imshow("imgList", imgList[i])  # 在窗口 imgList 逐帧显示cv.waitKey(1000)cv.destroyAllWindows()

3. 多帧图像保存函数 cv.imwritemulti

函数 cv.imwritemulti() 用于将多幅图像保存到指定的多帧图像文件中。

函数说明:

cv.imwritemulti(filename, img[, params=std::vector()]) -> retval

参数说明:

  • filename:读取多帧图像的文件路径和文件名
  • img:写入的多帧图像的数据文件
  • flags:图像写入模式,可选项,默认值None
  • retval:返回值,读取成功标志,布尔值

注意事项:

  1. 写入多帧图像文件的数据文件 img 是列表(list)类型,列表元素是二维 Numpy数组,即每个列表元素 img[i] 是一幅二维图像。
  2. 多帧图像中的每帧图像的大小可以相同,也可以不同。
  3. 写入多帧图像文件的数据文件可以是 tiff 格式,OpenCV 不允许 gif 格式。

【例程】多帧图像(动图)的保存

本例程示例多帧图像(动图)的保存。

"""
200 OpenCV examples by youcans / OpenCV 例程 200 篇
Copyright: 2022, Shan Huang, youcans@qq.com
"""# 【0108】多帧图像(动图)的保存
import cv2 as cv
from matplotlib import pyplot as pltif __name__ == '__main__':# 读取单幅图像,支持 bmp、jpg、png、tiff 等常用格式img1 = cv.imread("../images/FVid1.png")  # 读取彩色图像 FVid1.pngimg2 = cv.imread("../images/FVid2.png")  # 读取彩色图像 FVid2.pngimg3 = cv.imread("../images/FVid3.png")  # 读取彩色图像 FVid3.pngimg4 = cv.imread("../images/FVid4.png")  # 读取彩色图像 FVid4.pngimgList = [img1, img2, img3, img4]  # 生成多帧图像列表# 保存为多帧图像文件saveFile = "../images/imgList.tiff"  # 保存文件的路径ret = cv.imwritemulti(saveFile, imgList)if (ret):print("Image List Write Successed in {}".format(saveFile))print("len(imgList): ", len(imgList))  # imgList 是列表,只有长度没有形状

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【本节完】

版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/128466627)
Copyright 2022 youcans, XUPT
Crated:2022-12-30


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部