用OpenCV库调用电脑摄像头录制一段视频

用OpenCV库调用电脑摄像头录制一段视频

一、参考代码:

import cv2

# 设置视频捕获对象
cap = cv2.VideoCapture(0)

# 设置视频分辨率和格式
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
fourcc = cv2.VideoWriter_fourcc(*'MJPG')

# 创建视频编写器对象
out = cv2.VideoWriter('face_rotation_video.avi', fourcc, fps, (width, height))

# Main loop to capture the video
while True:
    ret, frame = cap.read()   # 从摄像头捕获一帧图像,成功ret就是true
    if not ret:
        break

    # 将当前帧写入视频文件
    out.write(frame)

    # 显示当前帧,这样可视化,方便做出调整,不然只是录制了,你看不到画面
    cv2.imshow('Face Rotation Video', frame)

    # 按下“q”,则退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

二、设置视频分辨率和格式

width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# width: 视频的宽度,以像素为单位。可以通过修改 cv2.CAP_PROP_FRAME_WIDTH 的值来更改宽度。

# 例如,如果想要设置宽度为 640 像素,可以使用 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)。

height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 视频的高度 同理。

fps = int(cap.get(cv2.CAP_PROP_FPS))
# 视频的帧率,表示每秒显示的帧数。可以通过修改 cv2.CAP_PROP_FPS 的值来更改帧率。注意,摄像头硬件和驱动程序可能会限制可用的帧率。例如,如果想要设置帧率为 30,可以使用 cap.set(cv2.CAP_PROP_FPS, 30)。

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
# 表示视频编解码器的四字符代码。常见的编解码器有 "MJPG"(Motion-JPEG),"XVID"(MPEG-4),"H264"(H.264/AVC)等。在这个示例中,我们使用了 "MJPG" 编解码器。要更改编解码器,可以将 'MJPG' 替换为其他编解码器的四字符代码,例如 cv2.VideoWriter_fourcc(*'XVID')。

三、拍摄镜像视频

添加:

  # 镜像翻转图像
    frame = cv2.flip(frame, flipCode=1)
import cv2

# 设置视频捕获对象
cap = cv2.VideoCapture(0)

# 设置视频分辨率和格式
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
fourcc = cv2.VideoWriter_fourcc(*'MJPG')

# 创建视频编写器对象
out = cv2.VideoWriter('face_rotation_video.mp4', fourcc, fps, (width, height))

# Main loop to capture the video
while True:
    ret, frame = cap.read()   # 从摄像头捕获一帧图像,成功ret就是true
    if not ret:
        break
        
    # 镜像翻转图像
    frame = cv2.flip(frame, flipCode=1)

    # 将当前帧写入视频文件
    out.write(frame)

    # 显示当前帧,这样可视化,方便做出调整,不然只是录制了,你看不到画面
    cv2.imshow('Face Rotation Video', frame)

    # 按下“q”,则退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()


猜你喜欢

转载自blog.csdn.net/qq_38689263/article/details/129650019