我正在尝试编写一个处理草图,它将采用每一行的中心像素的颜色并将该颜色应用于整行。但是,我什至无法更改像素。看起来草图甚至没有通过我试图更改像素的 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");
}