0

我正在尝试编写一个处理草图,它将采用每一行的中心像素的颜色并将该颜色应用于整行。但是,我什至无法更改像素。看起来草图甚至没有通过我试图更改像素的 for 循环,因为它没有打印出除了end draw结尾的任何语句draw()。我最终得到了一个未经处理的提要。有谁知道为什么这不起作用?

此外,目前正在使用 Processing 的标准视频库和 Capture,但如果有更好的库可以使用,请告诉我!谢谢!

更新:用一组数字测试我的算法,似乎使用内部 for 循环并没有像我想象的那样工作。外部循环的i仅在内部 for 循环第一次完成后递增一次,然后它只是退出外部循环而不是再次启动内部循环。这里发生了什么?

import processing.video.*;

Capture feed; // webcam

int pixelCount = width * height; // total # of pixels
int center = width / 2; // value for center pixel
int widthPlus = width + 1; // value to go row-to-row

color c; // center pixel color

void setup(){

  size(displayWidth, displayHeight);

  feed = new Capture(this);
  feed.start();
}

void draw(){

  if (feed.available() == true){
    feed.read();
  }

  image(feed, 0, 0);
  feed.loadPixels(); // load pixels from webcam

  /** Use to look at each row one at a time*/
  for (int i = 0; i < pixelCount; i+=widthPlus){
    println("Outer for-loop");
    c = feed.pixels[i + center]; //get center pixel

    /** Make each pixel in row the color of 'c' */
    for (int j = i; j < width; j++){
      println("Inner for-loop");
      feed.pixels[j] = c; // set pixel to 'c'
      println(i + " - " + j);
    }
  }

  feed.updatePixels(); // update pixels from webcam
  println("end draw"); 
}
4

0 回答 0