1

私は OpenCV Lib で Processing を使用しており、カメラ キャプチャで顔検出を行う代わりにビデオ (.mp4) をロードするように、作成者の Git からサンプル コードを書き直したいと考えていました。

Git とサンプル コード (動作中) へのリンク: リンク

ここに私のスケッチがあります:

import processing.video.*;
import gab.opencv.*;
import java.awt.Rectangle;

OpenCV opencv;
Movie myMovie;
Rectangle[] faces;

void setup() {
  size(480, 270);

  myMovie = new Movie(this, "people3.mp4");
  myMovie.loop();
  opencv = new OpenCV(this, myMovie.width, myMovie.height);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
}

void movieEvent(Movie myMovie) {
  myMovie.read();
}

void draw() {

  background(0);
  if (myMovie.available()) {    

    opencv.loadImage(myMovie);
    faces = opencv.detect();
    image(myMovie, 0, 0);

    if (faces != null) {
      for (int i = 0; i < faces.length; i++) {
        strokeWeight(2);
        stroke(255, 0, 0);
        noFill();
        rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
      }
    }
  }
}

私が得ているのは

IndexOutOfBoundsException: インデックス: 3、サイズ: 0

openCV.loadImage(myMovie) で、理由がわかりません。

どんな助けにも感謝します!

4

1 に答える 1