You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenCV中同时显示图像/摄像头画面与终端窗口

使用OpenCV实现摄像头画面与终端同步显示及目标检测操作

核心逻辑

不用复杂的多进程操作,只需将「摄像头帧读取、目标检测推理、终端信息输出、画面渲染刷新」四个步骤放到同一个事件循环中执行即可,运行时终端和OpenCV窗口会同时工作互不干扰。

前置依赖安装

在终端执行以下命令安装依赖:

pip install opencv-python numpy

可运行示例代码

以下示例实现了人脸检测功能,运行后会同时弹出摄像头画面窗口,终端实时打印检测到的人脸数量,可直接替换为你自己的目标检测逻辑:

import cv2

# 初始化默认摄像头,设备ID一般为0,外接摄像头可改为1/2等
cap = cv2.VideoCapture(0)
# 加载OpenCV自带的人脸检测预训练模型,可替换为YOLO等自定义检测模型
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

while True:
    # 读取一帧画面
    ret, frame = cap.read()
    if not ret:
        print("无法读取摄像头画面,程序退出")
        break

    # 目标检测逻辑,可自定义替换
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_detector.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    # 终端输出逻辑,可自定义输出检测类别、置信度、坐标等信息
    if len(faces) > 0:
        print(f"*当前检测到{len(faces)}个人脸*")
    else:
        print("*未检测到目标*")

    # 渲染检测结果到画面
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    
    # 显示摄像头画面
    cv2.imshow("Camera Preview", frame)

    # 按q键退出程序,waitKey为必须调用的方法,否则画面无法正常刷新
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

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

运行方法

在终端直接执行以下命令即可:

python 你的脚本文件名.py

注意事项

  • 如果需要运行算力消耗较大的目标检测模型,可将检测逻辑和终端输出逻辑放到独立子线程中执行,避免阻塞画面渲染导致卡顿
  • Linux/Mac环境下如果出现摄像头权限不足的问题,可在运行命令前加sudo获取权限
  • Windows系统需要先在系统设置中开启摄像头访问权限,否则程序无法正常调用摄像头

内容的提问来源于stack exchange,提问作者Tudor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:06:05