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

Opencv 隔帧取数据解码速度优化

  • 实用tips,若使用opencv进行解码,代码作如下优化能极大提升解码速度:
    cap = cv2.VideoCapture(file_path)
    videolen = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

    # 1. decode all frames, time cost!
    sampledFrames = []
    for i in range(videolen):
        ret, frame = cap.read()
        # maybe first frame is empty
        if ret == False:
            continue
        img = frame[:, :, ::-1]
        sampledFrames.append(img)

    cap.release()

    # 2. get frame index
    frames_idx = [xxx]

    # 3. sample
    frames = np.array(sampledFrames)
    imgs = []
    for idx in frames_idx:
        imgbuf = frames[idx]
        img = Image.fromarray(imgbuf, mode='RGB')
        imgs.append(img)

优化后:

    cap = cv2.VideoCapture(file_path)
    videolen = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

    # 1. get frame index
    frames_idx = [xxx]

    # 2. decode target frame
    imgs = []
    for i in range(videolen):
        ret = cap.grab()
        # maybe first frame is empty
        if ret == False:
            continue  
        if frames_idx and i == frames_idx[0]:
            frames_idx.pop(0)
            ret, frame = cap.retrieve()
            if frame is None:
                break
            imgbuf = frame[:, :, ::-1]
            img = Image.fromarray(imgbuf, mode='RGB')
            imgs.append(img)
        if frames_idx == None:
            break
    cap.release()

http://www.kler.cn/a/291732.html

相关文章:

  • 哈希表学习分享
  • 基于Springboot+Vue的中国蛇类识别系统 (含源码数据库)
  • 【Mysql】Mysql的多表查询---多表联合查询(上)
  • 【windows笔记】08-Windows中的各种快捷方式、符号链接、目录联接、硬链接的区别和使用方法
  • Python酷库之旅-第三方库Pandas(221)
  • 【软件测试】一个简单的自动化Java程序编写
  • Prometheus(八):Prometheus监控elasticsearch及常用API
  • Java 异常架构Exception(异常)
  • Docker学习之路【八】安装主从复制MYSQL8
  • 如何使用小乌龟清除认证缓存、还原版本、定位及常用开发工具集成
  • QT运行ROS工程
  • 【赛题已出】2024数学建模国赛A-E题已发布
  • 如何优雅的使用责任链模式?
  • vue3 置空a-select数据
  • 视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势
  • ARM发布新一代高性能处理器N3
  • 【git】git安装方法
  • K8S - 理解volumeMounts 中的subpath
  • 2. GIS数据工程师岗位职责、技术要求和常见面试题
  • HTTP Cookie 和 session
  • 中国次生林林龄分布数据(2020年)
  • 代码随想录冲冲冲 Day37 动态规划Part5
  • 外接串口板,通过串口打开adb模式
  • 今日(2024 年 9 月 4 日)科技新闻
  • macos 系统 降级, 重装, 升级图文教程
  • 【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!