OpenCV多摄像头同步调用与帧处理实战 - 第3节

3. OpenCV基础

OpenCV简介与安装 · 读取单摄像头视频流 · 显示与保存帧

3.1 OpenCV 简介与安装

OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机视觉库,提供了数百种图像与视频处理函数。它支持 C++、Python、Java 等语言,在学术与工业界被广泛使用。本章聚焦 Python 接口,带你快速上手。

核心模块概览

模块功能
core基础数据结构(Mat、Point、Scalar)
imgproc图像滤波、几何变换、颜色空间转换
videoio视频/摄像头读取与写入
highgui窗口显示、滑动条、鼠标交互
objdetect人脸检测、目标检测
OpenCV Python 模块架构 core imgproc videoio highgui objdetect 更多扩展模块

安装 OpenCV

推荐使用 pip 安装,建议在虚拟环境中进行:

# 基础安装(包含 contrib 扩展模块)
pip install opencv-contrib-python

# 若只需核心模块(轻量)
pip install opencv-python

验证安装:

import cv2
print(cv2.__version__)   # 例如 4.9.0

3.2 读取单摄像头视频流

使用 cv2.VideoCapture 打开摄像头(设备索引 0 表示第一个摄像头)。通过循环不断读取帧。

import cv2

cap = cv2.VideoCapture(0)          # 0 代表默认摄像头
if not cap.isOpened():
    print("无法打开摄像头")
    exit()

while True:
    ret, frame = cap.read()        # ret: 布尔值, frame: 图像矩阵
    if not ret:
        break
    # 在这里处理 frame
    cv2.imshow('Camera', frame)    # 显示帧
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
VideoCapture cap.read() 处理帧 imshow 循环读取直到 break

3.3 显示与保存帧

显示:使用 cv2.imshow(窗口名, 图像) 创建窗口并显示。配合 cv2.waitKey(delay) 刷新界面。

保存:使用 cv2.imwrite(文件名, 图像) 将帧保存为图片。支持 PNG、JPEG 等格式。

示例:按空格保存当前帧

import cv2

cap = cv2.VideoCapture(0)
frame_count = 0

while True:
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow('Live', frame)
    key = cv2.waitKey(1) & 0xFF
    if key == ord(' '):                     # 空格键保存
        filename = f'frame_{frame_count}.png'
        cv2.imwrite(filename, frame)
        print(f'保存 {filename}')
        frame_count += 1
    elif key == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
读取帧 imshow 显示 空格? 保存 继续循环

常用图像保存格式

扩展名特点适用场景
.png无损压缩,支持透明需要高质量帧
.jpg / .jpeg有损压缩,文件小快速存储、预览
.bmp无压缩,体积大调试或中间处理

通过本章学习,你已经掌握了 OpenCV 的基本安装、单摄像头读取、实时显示以及帧保存。这些是构建多摄像头系统的基础砖石。