• 《数字图像处理-OpenCV/Python》连载(9)多帧图像的读取与保存


    《数字图像处理-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()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在这里插入图片描述


    【第一章连载完】

    本书京东优惠购书链接: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

  • 相关阅读:
    【Prism系列】Module实现程序的插件化
    跟着架构师学习大型网站架构的技术细节:前端架构需要解决的问题
    数据库基础
    unity中的模型坐标系与3dmax导出的模型坐标系不一致的解决方案
    谷歌浏览器插件HackBar安装方法(详细教程)
    看看Python 3.9中即将推出的令人敬畏的新功能
    Ubuntu Budgie 22.04 设置中文语言并安装拼音输入法
    【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)
    el-form那些事
    【C++】:string用法详解
  • 原文地址:https://blog.csdn.net/youcans/article/details/133325652