OpenCV系列03丨视频的读取显示和保存

1. 从相机中读取视频

import numpy as np 
import cv2 as cv 

# 创建VideoCapture对象来捕获视频,参数用来指定哪个摄像头的数字
cap = cv.VideoCapture(0)
# 判断摄像头是否打开
if not cap.isOpened():
    print("无法打开摄像头")
    exit()
while True:
    # 逐帧获取,cap.read()返回布尔值(True/False),如果正确读取了帧,它将为True
    ret,frame = cap.read()
    # 如果正确读取帧,ret为True
    if not ret:
        print("没有接收到")
        break
    # cv.cvtColor是个颜色空间转换函数,可以实现rgb颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像(CV_BGR2GRAY)
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    # 显示结果帧e
    cv.imshow('frame', gray)
    # 按 “q”键可以终止程序运行
    if cv.waitKey(1) == ord('q'):
        break
# 完成所有操作后,释放捕获器
cap.release()
cv.destroyAllWindows()

2. 从文件中读取视频

import numpy as np
import cv2 as cv

# 加载文件路径的视频
cap = cv.VideoCapture('/home/kang/Desktop/openvino_demo/face_detection_demo.mp4')
# # 判断视频文件是否存在
while cap.isOpened():
    ret, frame = cap.read()
    # 如果正确读取帧,ret为True
    if not ret:
        print("无法读取视频")
        break
    # 转换为灰度图像
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    cv.imshow('frame', gray)
    if cv.waitKey(1) == ord('q'):
        break
cap.release()
cv.destroyAllWindows()

3. 保存视频

import numpy as np
import cv2 as cv


cap = cv.VideoCapture(0)
# 定义编解码器并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'XVID')
# 视频保存的路径
out = cv.VideoWriter('/home/kang/Desktop/openvino_demo/face_detection_demo.mp4', fourcc, 20.0, (640, 480))
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("无法读取视频")
        break
    # 垂直翻转原视频
    frame = cv.flip(frame, 0)
    # 写翻转的框架
    out.write(frame)
    cv.imshow('frame', frame)
    # 按 “q”键可以终止程序运行
    if cv.waitKey(1) == ord('q'):
        break
# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()


转载请注明:康瑶明的博客