OpenClaw 接入摄像头实战:WSL2 环境下的图像采集方案
近期尝试让运行在 WSL2 中的 OpenClaw AI 助手具备视觉能力,以便分析实体书籍内容。核心需求是在 Linux 子系统内调用 Windows 物理摄像头的画面。
调试过程与方案对比
方案一:OpenClaw Node 网关(失败)
最初尝试通过 Windows 端安装 Node.js 服务来桥接摄像头。这一路径耗时约 3 小时,最终因 WSL2 的网络隔离机制无法打通。
遇到的主要问题:
-
PowerShell 执行策略限制 默认策略禁止脚本运行,导致 npm 命令报错。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -
依赖缺失 npm 需要 Git 支持,手动安装 Git for Windows (v2.47.1) 后解决。
-
配置冲突 之前错误配置
npm config set git false导致后续安装异常,需删除该配置项。npm config delete git -
网络与端口隔离 WSL2 运行在 Hyper-V 虚拟机中,其 localhost 对 Windows 主机不可见。即使通过
netsh interface portproxy进行端口转发,OpenClaw 的设备签名验证仍会失败。gateway connect failed: Error: device signature invalid node host gateway closed (1008)
由于架构限制,Windows Node 无法与 WSL Gateway 建立稳定连接,此路不通。
方案二:浏览器插件中转(临时可用)
利用第三方网站配合 Chrome 扩展实现预览,虽然能显示画面,但无法满足自动化控制需求。
- 工具:webcamtests.com + OpenClaw Browser Relay
- 功能:实时预览、拍照、录像及参数检测
- 局限:需手动操作浏览器,依赖网络稳定性,无法集成到 AI 流程中
方案三:Python + OpenCV 本地程序(推荐)
最终采用原生 Python 脚本直接调用 Windows 硬件接口。这种方式无需跨系统通信,稳定性最高,且易于集成到 OpenClaw 的 Agent 逻辑中。
1. 环境准备
确保 Windows 环境下已安装 Python 及 OpenCV 库。
pip install opencv-python
2. 脚本实现
编写了两个版本的测试脚本,分别用于实时预览和自动抓拍。
版本 A:实时预览与交互
#!/usr/bin/env python3
"""
本地摄像头测试工具
功能:实时预览、拍照、录像、摄像头信息
"""
import cv2
import os
from datetime import datetime
class :
():
.camera_id = camera_id
.cap =
.save_dir = os.path.expanduser()
os.makedirs(.save_dir, exist_ok=)
():
.cap = cv2.VideoCapture(.camera_id)
.cap.isOpened():
()
width = (.cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = (.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = (.cap.get(cv2.CAP_PROP_FPS))
()
()
()
():
()
()
()
()
:
ret, frame = .cap.read()
ret:
cv2.imshow(, frame)
key = cv2.waitKey() &
key == ():
key == ():
.take_photo(frame)
cv2.destroyAllWindows()
():
timestamp = datetime.now().strftime()
filename = os.path.join(.save_dir, )
cv2.imwrite(filename, frame)
()
__name__ == :
test = WebcamTest()
test.open_camera():
test.show_preview()


