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()
相关推荐
wordbaby1 分钟前
混合检索:两全其美的艺术
人工智能·算法
Amy1870211182310 分钟前
数据中心电气接点测温:从“被动抢修”到“主动预警”的安全革命
人工智能·安全
jimmyleeee24 分钟前
GEN AI安全:威胁全景---从训练到运行的攻防实战
人工智能·安全
阿里云大数据AI技术38 分钟前
DataWorks Data Agent 实战课堂(八):数据质量巡检服务
人工智能·agent
昇腾知识体系44 分钟前
昇腾 A5 ISA 指令集:文档入口与 mem_bar 等关键指令
人工智能·华为·架构·知识图谱
ltqvibe1 小时前
让AI操作业务系统,误删数据谁来拦
人工智能·数字员工管理·高危操作拦截·ai审计追责
oscar9991 小时前
Ollie:Opik 内置的 AI 助手,让 Agent 调试从“看”变成“修”
人工智能·opik·ollie
wshzd1 小时前
LLM漫谈(十一)| 5 个 开源Agent 源码剖析
人工智能
酒旅Agent开发实战1 小时前
酒店供应链MCP实践分享
人工智能·大模型·酒店预订·ai agent·mcp