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()
相关推荐
haiyu_y2 分钟前
Day 45 预训练模型
人工智能·python·深度学习
【建模先锋】5 分钟前
基于CNN-SENet+SHAP分析的回归预测模型!
人工智能·python·回归·cnn·回归预测·特征可视化·shap 可视化分析
Robot侠7 分钟前
视觉语言导航从入门到精通(四)
人工智能·深度学习·transformer·rag·视觉语言导航·vln
思迈特Smartbi10 分钟前
思迈特软件斩获鲲鹏应用创新大赛(华南赛区) “最佳原生创新奖”
人工智能·ai·数据分析·bi·商业智能
科技小金龙15 分钟前
小程序/APP接入分账系统:4大核心注意事项,避开合规与技术坑
大数据·人工智能·小程序
说私域17 分钟前
开源AI智能名片链动2+1模式商城小程序的“展现”策略研究
人工智能·小程序
科学最TOP18 分钟前
xLSTM-Mixer:基于记忆混合的多变量时间序列预测
大数据·人工智能·算法·机器学习·时间序列
x新观点25 分钟前
2025年IDC服务商市场观察:博大数据在第三方数据中心排名中表现稳健
大数据·人工智能·云计算
YangYang9YangYan26 分钟前
2026年中专学历考会计的证书选择路径
大数据·人工智能·学习
x新观点27 分钟前
2025年IDC服务商市场深度解析:博大数据荣登第三方数据中心排名前列
大数据·人工智能·云计算