Python OpenCV调用笔记本摄像头并实现视频录制与播放

方予
方予
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何使用Python OpenCV调用笔记本内置摄像头获取视频流。通过VideoCapture类初始化设备,逐帧读取图像并进行高斯模糊处理,同时利用VideoWriter类将处理后的帧保存为视频文件。代码演示了窗口显示、按键退出及资源释放的完整流程,适用于跨平台视频处理开发。

此前曾介绍过利用Android平台OpenCV接入视频的方法,目标对象为手机摄像头。OpenCV的优势在于提供跨平台接口,使得相同功能在不同平台上实现时,能显著降低移植难度。本文后续将采用类似接口,从笔记本电脑摄像头获取视频数据,因此,运行本文代码的前提是拥有一台配备摄像头的电脑。

需要明确的是,OpenCV的核心优势在于图像处理而非视频编解码。因此,不应使用OpenCV执行超出其能力的操作。我们使用OpenCV接入视频或图片的根本目的,是为了对获取到的视频帧或图像进行后续处理。

在Python环境下配置OpenCV的过程较为复杂,无法直接通过pip命令安装。虽然网上相关教程众多,但在查阅资料时需特别注意区分Python版本,因为Python 2与Python 3的配置方法存在差异。

本节主要实现利用笔记本内置摄像头捕获视频,并通过逐帧显示的方式实现视频播放效果。

  1. 创建摄像头对象,并指向对应的视频源文件。
  2. 通过逐帧显示图像来实现视频的流畅播放。

接下来进入核心环节,在配置好OpenCV后,创建一个名为video_capture.py的文件,具体代码如下:

#!/usr/bin/env python3 
import cv2 
 
#创建显示视频的窗口 
cv2.namedWindow('Video') 
 
#打开摄像头 
video_capture = cv2.VideoCapture(0) 
 
#创建视频写入对象 
video_writer = cv2.VideoWriter('test.avi', 
                cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 
                video_capture.get(cv2.CAP_PROP_FPS), 
                (int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)), 
                int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))) 
 
#读取视频帧,对视频帧进行高斯模糊,然后写入文件并在窗口显示 
success, frame = video_capture.read() 
while success and not cv2.waitKey(1) == 27: 
  blur_frame = cv2.GaussianBlur(frame, (3, 3), 0) 
  video_writer.write(blur_frame) 
  cv2.imshow("Video", blur_frame) 
  success, frame = video_capture.read() 
 
#回收资源 
cv2.destroyWindow('Video') 
video_capture.release() 

仔细分析代码可知,Python中OpenCV的模块名称为cv2,因此首先导入该模块。随后,代码中准备了一个用于显示视频帧的窗口。

获取摄像头视频需使用VideoCapture类,其构造参数为摄像头的索引号。由于笔记本通常只有一个摄像头,其索引号为0;若需将视频帧写入文件,则使用VideoWriter类,其构造参数依次包括写入的文件路径名、编码格式、帧率以及视频尺寸。在本例中,帧率和视频尺寸直接使用了摄像头提供的参数,这些参数可通过VideoCapture对象获取。

准备工作完成后,调用VideoCapture.read()方法按帧读取数据。每一帧视频本质上是一幅图像,代码对其执行高斯模糊处理,随后将处理后的帧写入文件,并在窗口中实时显示。

当用户点击Esc键时,程序将退出视频预览和录制状态,随后销毁窗口并释放摄像头资源。

可以看出,Python版本的OpenCV依然保持了代码简洁的特点,这为开发者提供了一种思路:在研究阶段可使用Python快速实现原型,而在实际部署阶段可转换为C++实现。当然,如果对Python的性能足够信任,也可以直接使用Python。需要注意的是,Python的OpenCV仅是一套接口,其底层核心代码由C++编写,性能表现良好,且Python调用C/C++代码的效率较高。

以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表