Python机器视觉--OpenCV入门--视频的加载,录制

1. 视频的加载和显示,录制

1.1 视频采集

  • 视频是由图片组成的, 视频的每一帧就是一幅图片, 一般是30帧, 表示一秒显示30张图片.

  • cv2.VideoCapture可以捕获摄像头, 用数字来表示不同的设备, 比如0, 1

  • 如果是视频文件, 可以直接指定路径即可.

# 打开视频文件
vc = cv2.VideoCapture('./1.mp4')

# 打开摄像头
vc = cv2.VideoCapture(0)
  • 检查是否正确打开

    if vc.isOpened():
        # 读取视频的一帧.
        open, frame = vc.read()
    else:
        open = False
    
  • 循环读取视频每一帧数据

    while True:
        # 可以读到内容ret返回True
        ret, frame = vc.read()
        # 读到最后frame就是空
        if frame is None:
            break
        if ret == True:
            cv2.imshow('result', gray)
            # 0xFF == 27表示按esc退出键会退出
            if cv2.waitKey(33) & 0xFF == 27:
                break
    vc.release()
    cv2.destroyAllWindows()
    
  • cap.read() 返回两个值, 第一个为状态值, 读到帧为True, 第二个值为视频帧

  • cap.release()

  • 循环读取摄像头的每一帧数据

    ## 从摄像头一直读取数据
    # 创建窗口
    cv2.namedWindow('video', cv2.WINDOW_NORMAL)
    cv2.resizeWindow('video', 640, 480)
    
    # 获取视频设备
    cap = cv2.VideoCapture(0)
    
    while True:
        # 从摄像头读取视频
        ret, frame = cap.read()
        
        # 将视频帧放在窗口中显示
        cv2.imshow('video', frame)
        
        # 等待键盘事件, 如果为q,退出
        key = cv2.waitKey(1)
        if key & 0xFF == ord('q'):
            break
            
    # 释放
    cap.release()
    cv2.destroyAllWindows()
    

1.2 视频录制

  • VideoWriter : 参数一为输出文件, 参数二为多媒体文件格式(VideoWriter_fourcc, 参数三为帧率, 参数四为分辨率.
  • write 编码并写入缓存
  • release 缓存内容写入磁盘, 并释放资源
cap = cv2.VideoCapture(0)
# *mp4v就是解包操作 等同于  'm', 'p', '4', 'v'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# (640, 480)表示摄像头拍视频, 这个大小搞错了也不行.
# 主要是这个分辨率.
vw = cv2.VideoWriter('output.mp4', fourcc, 20, (640, 480))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print('can not recive frame, Exiting...')
        break
        
    vw.write(frame)
    cv2.imshow('frame', frame)
    
    if cv2.waitKey(1) == ord('q'):
        break
        
cap.release()

#释放VideoWriter
vw.release()

cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/qq_43944517/article/details/126206591
今日推荐