吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1803|回复: 5
收起左侧

[Python 原创] 解决opencv-python 在2k采集模式下,录制问题

  [复制链接]
lz270978971 发表于 2020-12-7 10:25
本帖最后由 lz270978971 于 2020-12-7 10:30 编辑

问题:opencv-python 在2k采集模式下,画面卡顿厉害,而且录制成功后出现加速播放的效果,实际时常和录制时长相差太大

经过几天的研究,发现只要设置几个地方,就能解决这个问题

  • 1:很多摄像头在高分辨率的情况下都不到15帧,以MJPG格式解码能达到30帧。
  • 2:保存的格式要和设置的格式一致
    废话少说,上代码
import time

import numpy as np
import cv2

def video_hd():
    start = int(time.time())
    cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)

    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) # 设置宽为1920
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) # 设置高为1080
    cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG')) # 使用设摄像头录制高清视频的时候一定要设置为MJPG,别的格式无法支持高清

    fourcc = cv2.VideoWriter_fourcc(*'MJPG') # 保持的格式
    out = cv2.VideoWriter('{}.avi'.format(str(start)), fourcc, 30.0, (1920, 1080))
    print("按字母 q 结束录制")
    time1 = time.time()
    while cap.isOpened():
        step = int(time.time())

        ret, frame = cap.read()
        if ret == True:
            out.write(frame)
            cv2.imshow('frame', frame)
            if (cv2.waitKey(1) & 0xFF == ord('q')):
                print(f"花费的时间 {time.time() - time1}")
                break
        else:
            break
    # 资源释放,在录制结束后,我们要释放资源:
    # 释放资源
    cap.release()
    out.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    video_hd()

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hj170520 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ulysses115 发表于 2020-12-7 10:43
多谢楼主,希望以后用得上
hydai520 发表于 2020-12-7 11:00
cr4ck 发表于 2020-12-7 11:59
haidibingjing 发表于 2020-12-7 12:27
还在学基础,了解一下
funwell 发表于 2020-12-7 13:47
帅,以后踩坑时来看看这帖子。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表