《数字图像处理-OpenCV/Python》连载(9)多帧图像的读取与保存
本书京东优惠购书链接:https://item.jd.com/14098452.html
 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html
 

第1章 图像的基本操作
为了方便初学者从零开始学习OpenCV-Python,本书从图像的读取、保存和显示等基本操作开始介绍,使读者可以循序渐进地使用和理解本书的每一个例程。
1.5 多帧图像的读取与保存
多帧图像是指将多幅图像或帧数据保存在单个文件中,也称多页图像或图像序列,主要用于对时间或场景相关图像集合进行操作的场合。例如,时间序列图像是动态图像(动图),可以实现简单的动画效果,计算机断层扫描(CT)图像是空间序列图像。常用的多帧图像格式有GIF、PNG、TIFF。
函数cv.imreadmulti用于从指定的多帧图像文件中读取多幅图像。函数cv.imwritemulti用于将多幅图像保存到指定的多帧图像文件中。
 
函数原型
cv.imreadmulti(filename[, mats=None, flags=IMREAD_ANYCOLOR]) → retval, mats
cv.imreadmulti(filename, start, count[, mats=None, flags=IMREAD_ANYCOLOR]) → retval, mats
cv.imwritemulti(filename, img[,]) → retval
参数说明
- filename:读取或写入多帧图像的文件路径和文件名,包括扩展名。
 - mats:返回值,读取的图像文件向量,是列表类型,列表元素为多维Numpy数组。
 - img:写入的多帧图像的数据文件,是列表类型,列表元素为多维Numpy数组。
 - flags:图像读取模式,可选项,默认值为IMREAD_ANYCOLOR。
 - start:开始读取的帧索引,即跳过此前的图像帧。
 - count:读取图像帧的页数。
 - retval:返回值,读取成功标志,布尔值。
 
注意问题
 (1) 本函数中读取多帧图像文件的返回值mats、写入的多帧图像的数据文件img是列表(List)类型。列表元素是多维Numpy数组,即每个列表元素 mats[i] 是一幅二维图像。
 (2) 多帧图像中每帧图像的大小可以相同,也可以不同。
 (3) OpenCV目前不支持GIF格式,推荐使用TIFF格式处理多帧图像。
【例程0108】多帧图像(动图)的读取和保存
本例程用于多帧图像(动图)的读取和保存。
# 【0108】多帧图像(动图)的读取和保存
import cv2 as cv
from matplotlib import pyplot as plt
if __name__ == '__main__':
    # 读取单幅图像,支持 BMP、JPG、PNG、TIFF 等常用格式
    img1 = cv.imread("../images/FVid1.png")  # 读取彩色图像 FVid1.png
    img2 = cv.imread("../images/FVid2.png")  # 读取彩色图像 FVid2.png
    img3 = cv.imread("../images/FVid3.png")  # 读取彩色图像 FVid3.png
    img4 = cv.imread("../images/FVid4.png")  # 读取彩色图像 FVid4.png
    imgList = [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 是列表,只有长度没有形状
    # 读取多帧图像文件
    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()
 

【第一章连载完】
本书京东优惠购书链接:https://item.jd.com/14098452.html
版权声明:
 youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/133325652)
 Copyright 2023 youcans, XUPT
 Crated:2023-09-28
欢迎关注本书CSDN独家连载专栏
 《数字图像处理-OpenCV/Python》连载: https://blog.csdn.net/youcans/category_12418787.html



















