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

Processing 3.2.3+Kinect开发:全局变量未定义及colorWidth字段问题求助

解决Processing Kinect波纹效果的两个常见问题

一、「全局变量x、y不存在」报错处理

Processing没有默认全局的x、y内置变量,直接使用会触发未定义错误。解决分两种场景:

  • 若需获取鼠标位置:直接替换为内置变量mouseX、mouseY;
  • 若需自定义坐标变量:在代码最顶部(全局作用域)声明变量,示例:
    float x, y; // 全局声明x、y
    
    之后在setup()或draw()中给变量赋值,比如:
    x = width / 2; // 初始化x为画布中心
    y = height / 2;
    

二、kinect.colorWidth、colorHeight无法识别处理

问题源于Kinect库的API命名差异,不同库的宽高获取方式不同:

  1. 若使用SimpleOpenNI库:
    彩色图像宽高需通过函数调用获取,而非直接访问字段,正确写法是kinect.colorImageWidth()和kinect.colorImageHeight(),同时要确保已启用彩色流:
    kinect.enableColor(); // setup()中启用彩色流
    int colorW = kinect.colorImageWidth();
    int colorH = kinect.colorImageHeight();
    
  2. 若使用其他库(如KinectV2):
    确认库的API文档,部分库用kinect.colorWidth、kinect.colorHeight,但需先初始化彩色数据流,且确保库版本兼容Processing 3.2.3。

修正后的完整示例代码(SimpleOpenNI版)

import SimpleOpenNI.*;

SimpleOpenNI kinect;
float x, y; // 全局声明自定义坐标变量

void setup() {
  kinect = new SimpleOpenNI(this);
  kinect.enableColor(); // 启用彩色流
  
  // 获取彩色图像尺寸并设置画布
  int colorW = kinect.colorImageWidth();
  int colorH = kinect.colorImageHeight();
  size(colorW, colorH);
  
  // 初始化x、y为画布中心
  x = width / 2;
  y = height / 2;
}

void draw() {
  kinect.update(); // 更新Kinect数据
  image(kinect.colorImage(), 0, 0); // 绘制彩色图像
  
  // 波纹效果示例(这里用椭圆模拟波纹中心)
  fill(255, 0, 0, 100);
  ellipse(x, y, 50, 50);
  
  // 跟随鼠标更新坐标
  x = mouseX;
  y = mouseY;
}

注意事项

  • 确保已正确安装对应Kinect库:通过Processing菜单栏「Sketch」→「Import Library」搜索安装;
  • 若使用Kinect硬件,需提前安装对应驱动,确保设备被系统识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:11:12