Making of "camscape" - Pt.2 - Pixels Analysis 像素点分析 - [Works]

之前那节 中俺已经带过像素点索引和笛卡尔坐标间的转换。所以这节的内容会相对少一些。

首先声明一个二维数组c 用来存储像素点的颜色。

解释一下二维数组。上一节中提到的像素点序列,它存储的是每个像素点的色值,而它的索引只包含一个线形整数,即pixels[0],pixels[1],pixels[2],pixels[3]......这就是一个典型的一维数组。

而二维数组则有两个索引数据,譬如上一节中也提到的笛卡尔坐标,包含了x坐标和y坐标,拿刚声明的数组c 来说事儿,即c[0][0],c[0][1],c[0][2],c[0][3],c[1][0],c[1][1],c[1][2],c[1][3]......这就是个典型的二维数组。当然为了更好地理解,可以把二维数组c 以矩阵 来排布。

c = {{255,205,155,105},
       {  55,    5,  55,105},
       {155,205,255,205},
       {155,105,  55,   5}};

当然我们可以用一维数组来存储像素点色值,但为了之后的绘制的便利,还是以二维数组来存储像素点的色值。

import JMyron.*;
color [][] c; // 声明存储颜色的二维数组c
JMyron m;

void setup(){
  size(640,480,P3D);
  frameRate(30);
  m = new JMyron();
  m.start(width,height);
  m.findGlobs(0);
  c = new color[width][height]; // 设置矩阵的大小
}
void draw(){
  background(0);
  m.update();
  int[] img = m.image();
  for (int x = 0; x < width; x ++ ) { //for 循环嵌套
    for (int y = 0; y < height; y ++ ) {
      int loc = x + y * width; // 像素点索引和笛卡尔坐标换算
      c[x][y] = img[loc]; // 像素点色值赋给对应坐标的数组c 中的元素
    }
  }
}

下一节是内容比较多的绘制部分,敬请期待。

 



Posted by at 16:03:00 | Trackback (0) | Edit |

Comments



Add Comment