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

如何在Processing Sketch中调用Surface Book 2内置双摄像头视频

解决Surface Book 2摄像头接入Processing Sketch的问题

看起来你已经在尝试用Processing的video库调用摄像头,但代码还没完成,而且需要针对双摄像头的场景做适配。下面是一步步的实操解决方案:

第一步:先完整列出所有可用摄像头

首先得补全摄像头列表的打印逻辑,这样能明确看到Surface Book 2前后两个摄像头的具体名称——这是精准指定摄像头的关键:

import processing.video.*;
Capture cam;

void setup() {
  size(640, 480);
  
  // 获取系统所有可用摄像头
  String[] cameras = Capture.list();
  
  if (cameras.length == 0) {
    println("没有可用摄像头");
    exit();
  } else {
    println("可用摄像头列表:");
    // 补全循环,打印每个摄像头的索引和名称
    for (int i = 0; i < cameras.length; i++) {
      println(i + ": " + cameras[i]);
    }
  }
}

void draw() {
  // 后续添加画面绘制逻辑
}

运行这段代码后,你会在Processing控制台看到类似输出(Surface Book 2的摄像头名称通常会标注Front/Rear):

0: Microsoft Camera Front
1: Microsoft Camera Rear

第二步:指定目标摄像头初始化Capture

拿到摄像头的索引或名称后,有两种方式初始化视频流:

方式1:通过索引指定(简单直接)

比如要调用前置摄像头(对应索引0),在setup的else块里添加:

cam = new Capture(this, cameras[0]);
cam.start();

方式2:通过名称匹配(更稳定,避免索引变动)

如果担心摄像头索引可能因系统设置变化,可以通过名称关键词匹配:

// 在setup的else块里添加:
String targetCamName = "";
// 寻找包含"Front"的前置摄像头,换成"Rear"就是后置
for (String camName : cameras) {
  if (camName.contains("Front")) {
    targetCamName = camName;
    break;
  }
}

if (!targetCamName.isEmpty()) {
  cam = new Capture(this, targetCamName);
  cam.start();
} else {
  println("未找到目标摄像头");
  exit();
}

第三步:完整可运行代码

把所有逻辑整合,实现实时摄像头画面显示:

import processing.video.*;
Capture cam;

void setup() {
  size(640, 480);
  
  String[] cameras = Capture.list();
  
  if (cameras.length == 0) {
    println("没有可用摄像头");
    exit();
  } else {
    println("可用摄像头列表:");
    for (int i = 0; i < cameras.length; i++) {
      println(i + ": " + cameras[i]);
    }
    
    // 初始化前置摄像头(可根据控制台输出调整索引或名称)
    cam = new Capture(this, cameras[0]);
    cam.start();
  }
}

void draw() {
  if (cam.available()) {
    cam.read();
  }
  // 将摄像头画面绘制到Processing窗口
  image(cam, 0, 0, width, height);
}

// 可选:处理摄像头异步帧事件,提升画面流畅度
void captureEvent(Capture c) {
  c.read();
}

关键注意事项

  • 权限问题:首次运行时Windows会弹出摄像头权限请求,一定要选择允许,否则Processing无法访问摄像头。
  • 库安装检查:确认你已经在Processing的「Sketch > Import Library > Add Library」里安装了Video库。
  • 分辨率适配:如果摄像头默认分辨率和窗口尺寸不匹配,可以在初始化时指定分辨率,比如new Capture(this, 1280, 720, cameras[0])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:54