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

如何实现同一摄像头同时供两个不同应用调用?

关于Windows 10下OpenCV调用被占用摄像头的解决方案

可行性说明

Windows系统默认对物理摄像头设备采用独占访问机制,原生OpenCV的VideoCapture接口无法直接绕过该限制访问被占用的摄像头,但可以通过「物理摄像头捕获→虚拟摄像头分流」的方案实现该需求。

具体操作步骤

  • 第一步:安装本地虚拟摄像头生成工具,比如OBS Studio,安装时确保勾选「虚拟摄像头」可选组件。
  • 第二步:配置物理摄像头捕获:打开OBS,在「来源」面板添加「视频捕获设备」,选择目标物理摄像头,确认后即可看到摄像头实时画面。进入OBS设置的「虚拟摄像头」栏目,可根据需要调整生成的虚拟摄像头数量,最多支持4路同时输出。设置完成后点击主界面控制栏的「启动虚拟摄像头」按钮。
  • 第三步:修改OpenCV调用逻辑,将原物理摄像头的设备ID替换为虚拟摄像头的设备ID即可,无需修改其他代码。一般物理摄像头的设备ID为0,第一个生成的虚拟摄像头ID为1,若无法正常打开可依次尝试2、3、4等ID。

调用示例代码

import cv2

# 1对应虚拟摄像头的设备ID,可根据实际情况调整
cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)

if not cap.isOpened():
    raise Exception("虚拟摄像头启动失败,请检查OBS配置")

while True:
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow("Camera Output", frame)
    if cv2.waitKey(1) == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

注意事项

  • 只要OBS保持后台运行、虚拟摄像头处于启动状态,所有需要调用摄像头的应用均可分配不同的虚拟设备ID访问,不会出现占用报错。
  • 也可使用其他本地虚拟摄像头驱动工具替代OBS,核心逻辑一致:由单一工具独占物理摄像头硬件,再分发多路虚拟视频流供不同应用调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:15:00