0

各行の中心ピクセルの色を取り、その色を行全体に適用する処理スケッチを作成しようとしています。ただし、ピクセルを変更することさえできません。end drawの最後にある以外のステートメントを出力しないため、ピクセルを変更しようとしている for ループをスケッチが通過していないようですdraw()。操作されていないフィードになってしまいます。これが機能しない理由を誰かが知っていますか?

また、現在 Capture で Processing の標準ビデオ ライブラリを使用していますが、より良いライブラリがあれば教えてください。ありがとう!

更新:数値の配列を使用してアルゴリズムをテストすると、内側の for ループを使用すると、思ったように機能しないようです。外側のiループの は、内側の for ループが最初に完了した後に 1 回だけインクリメントされ、内側のループを再度開始する代わりに、外側のループを終了します。何が起きてる?

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