跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

OpenClaw 实战:WSL2 环境下使用 Python 调用摄像头

在 WSL2 环境下让 OpenClaw AI 助手访问摄像头的三种方案。第一阶段尝试通过 Node.js 配对,因 WSL2 网络隔离和端口占用失败;第二阶段使用浏览器方案,虽可预览但无法自动化;第三阶段采用 Python + OpenCV 本地程序,成功实现摄像头调用及拍照功能。结论是 WSL2 无法直接访问摄像头硬件,需借助 Windows 原生程序或特定桥接方案。

CloudNative发布于 2026/4/6更新于 2026/5/3127 浏览
OpenClaw 实战:WSL2 环境下使用 Python 调用摄像头

OpenClaw 实战:让 AI 拥有'眼睛'——摄像头访问完全指南

本文介绍如何在 WSL2 环境下让 OpenClaw AI 助手访问摄像头画面。

探索过程

第一阶段:OpenClaw Node 配对(失败)

在 WSL2 中安装 OpenClaw,尝试控制摄像头。需要在 Windows 上安装 Node.js 和 npm,但遇到网络隔离问题,最终放弃。

1.1 安装 Node.js

下载绿色版 Node.js (v24.14.0),配置环境变量:

$nodePath = "D:\WSL\node-v24.14.0-win-x64"
$env:Path += ";$nodePath"
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$nodePath", "User")

问题 1:PowerShell 执行策略限制

错误信息:npm : File ... cannot be loaded because running scripts is disabled on this system.

解决:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

问题 2:npm 需要 Git

错误信息:npm error code ENOENT ... spawn git

解决:手动下载并安装 Git for Windows (v2.47.1)。

问题 3:npm 配置错误

之前尝试配置 npm config set git false 导致后续安装失败。

解决:

npm config delete git
1.2 安装 OpenClaw Node
# 安装 openclaw
npm install -g openclaw
# 安装 node 服务
openclaw node install
# 启动 node
openclaw node restart
# 查看状态
openclaw node status
1.3 配对失败原因分析

问题 1:端口占用 WSL Gateway 已占用 18789 端口,Windows Node 无法绑定。

问题 2:网络隔离 WSL2 运行在 Hyper-V 虚拟机中,与 Windows 主机网络隔离。WSL 的 localhost (127.0.0.1) Windows 访问不到。

错误日志:gateway connect failed: Error: device signature invalid

问题 3:配置验证失败

错误日志:Invalid config at /home/kim/.openclaw/openclaw.json: - plugins.slots.memory: plugin not found: memory-core

尝试修复配置:

openclaw config.set agents.defaults.memorySearch.enabled false
openclaw doctor --fix

最终放弃原因: WSL2 架构限制导致 Windows Node 无法与 WSL Gateway 建立稳定连接。即使通过端口转发能连通,device signature 验证也过不去。

折腾 3 小时以上,决定换方案。

第二阶段:浏览器方案(临时可用)

使用浏览器网站直接调用设备摄像头,通过 OpenClaw Browser Relay 插件实现,但操作繁琐且无法自动化。

功能:

  • 实时摄像头预览
  • 拍照、录像
  • 摄像头参数检测(分辨率、FPS、亮度等)

摄像头信息示例:

  • Webcam Name: Integrated Camera
  • Resolution: 1280×720
  • Frame rate: 15 FPS

优点:

  • 无需安装,打开即用
  • 支持拍照、录像、实时预览

缺点:

  • 需要手动操作浏览器
  • 依赖 Chrome 扩展连接
  • 无法自动化控制
  • 网络依赖

实际测试: 成功拍到摄像头画面,确认摄像头硬件正常,能拍到清晰画面。但浏览器方案无法满足自动化需求。

第三阶段:Python + OpenCV 本地程序(成功)

这是最满意的方案。只要告诉 AI:'看看这是啥',它就能调用摄像头看,然后回答能看到什么。

3.1 安装依赖
pip install opencv-python

OpenCV 是成熟的计算机视觉库,支持摄像头访问、图像处理、目标检测等功能。

3.2 创建摄像头脚本

编写了两个版本的脚本:

版本 1:实时预览版 (webcam.py)

#!/usr/bin/env python3
""" 本地摄像头测试工具 - 复刻 webcamtests.com 核心功能
功能:实时预览、拍照、录像、摄像头信息
"""
import cv2
import os
from datetime import datetime

class WebcamTest:
    def __init__(self, camera_id=0):
        self.camera_id = camera_id
        self.cap = None
        self.save_dir = os.path.expanduser("~/Pictures/WebcamTest")
        os.makedirs(self.save_dir, exist_ok=True)

    def open_camera(self):
        """打开摄像头"""
        self.cap = cv2.VideoCapture(self.camera_id)
        if not self.cap.isOpened():
            print(f"无法打开摄像头 (ID: {self.camera_id})")
            return False
        width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))
        height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
        fps = int(self.cap.get(cv2.CAP_PROP_FPS))
        print(f"摄像头已打开")
        print(f"  分辨率:{width}x{height}")
        print(f"  FPS: {fps}")
        return True

    def show_preview(self):
        """实时预览"""
        print("实时预览中...")
        print("  按 'q' 退出预览")
        print("  按 'p' 拍照")
        print("  按 'r' 开始/停止录像")
        while True:
            ret, frame = self.cap.read()
            cv2.imshow('Webcam Test', frame)
            key = cv2.waitKey(1) & 0xFF
            if key == ord('q'):
                break
            elif key == ord('p'):
                self.take_photo(frame)
        cv2.destroyAllWindows()

版本 2:自动拍照版 (webcam-snap.py)

#!/usr/bin/env python3
""" 本地摄像头测试工具 - 自动拍照版本 """
import cv2
import os
from datetime import datetime

def main():
    save_dir = os.path.expanduser("~/Pictures/WebcamTest")
    os.makedirs(save_dir, exist_ok=True)
    cap = cv2.VideoCapture(0)
    if not cap.isOpened():
        print("无法打开摄像头")
        return
    print("摄像头已打开")
    print(f"  分辨率:{int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))}x{int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))}")
    # 预热摄像头
    for i in range(30):
        cap.read()
    # 拍照
    ret, frame = cap.read()
    if ret:
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = os.path.join(save_dir, f"photo_{timestamp}.jpg")
        cv2.imwrite(filename, frame)
        print(f"照片已保存:{filename}")
    cap.release()

if __name__ == "__main__":
    main()
3.3 运行并拍照
python D:\openclaw-scripts\webcam-snap.py

成功输出:

[图片:摄像头预览效果]

[图片:房间画面]

[图片:拍摄的照片]

技术总结

WSL2 无法直接访问摄像头硬件,需要 Windows 原生程序。

经验教训

  1. 不要硬磕架构限制
  2. 利用现有工具
  3. 理解环境差异
  4. 自动化优先

目录

  1. OpenClaw 实战:让 AI 拥有“眼睛”——摄像头访问完全指南
  2. 探索过程
  3. 第一阶段:OpenClaw Node 配对(失败)
  4. 1.1 安装 Node.js
  5. 1.2 安装 OpenClaw Node
  6. 安装 openclaw
  7. 安装 node 服务
  8. 启动 node
  9. 查看状态
  10. 1.3 配对失败原因分析
  11. 第二阶段:浏览器方案(临时可用)
  12. 第三阶段:Python + OpenCV 本地程序(成功)
  13. 3.1 安装依赖
  14. 3.2 创建摄像头脚本
  15. 3.3 运行并拍照
  16. 技术总结
  17. 经验教训
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 滑动窗口算法实战:串联所有单词的子串与最小覆盖子串
  • 网络安全入门指南:基础技能与学习路线详解
  • JavaWeb 核心:JSON 数据交换与 Ajax 异步请求详解
  • 本地大模型部署指南:Ollama 安装与 Python 调用
  • 学习 Python 推荐的 10 个优质技术资源网站
  • Web 项目 UI 自动化测试实战:从零搭建博客系统测试框架
  • Unitree Go2 机器人 ROS2 避障与攀爬功能开发实战
  • Python 中使用 flashtext 模块进行关键词提取与替换
  • Qwen3-32B 开源部署实践:Clawdbot Web 网关 + 企微/钉钉集成
  • AI 大模型的本质:基于大数据的拟合
  • Layui 框架中 Unity WebGL Tab 切换黑屏问题的解决方案
  • Java 自动装箱与拆箱详解
  • QGIS Python 编程秘籍(一)
  • AgentScope-Java 框架特性及快速入门
  • JavaScript 流程控制与数组基础实战
  • Windows 系统 Docker Desktop 下载、安装及启动故障解决方案
  • Coze 工作流实战:零门槛生成 AI 漫剧全流程解析
  • 1Panel 部署 Ollama 与 Open WebUI 构建私有化 AI 平台
  • OpenAI o1 模型的核心价值与行业意义分析
  • Android WebView 版本升级方案详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online