JavaCV サンプルプログラム
目次
カメラ映像を表示する
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.OpenCVFrameGrabber;
/**
* カメラから映像をWindowに表示する.
*
* @author uchicom: Shigeki Uchiyama
*
*/
public class Sample1 {
/**
* サンプルを実行する.
*
* @param args
*/
public static void main(String[] args) {
Sample1 sample = new Sample1();
sample.execute();
}
/** 画像表示スレッド死活状態 */
private boolean alive = true;
/**
* メイン処理.
*/
private void execute() {
CanvasFrame canvas = new CanvasFrame("カメラ");
// 画面を閉じたら画像表示スレッドを停止して、画面リソースを開放
canvas.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {
alive = false;
canvas.dispose();
}
});
// カメラの取得
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
// 画像取得表示スレッド
Thread thread = new Thread(() -> {
try {
// 開始
grabber.start();
while (alive) {
// 画像取得
Frame image = grabber.grab();
// 画像表示
if (image != null) {
canvas.showImage(image);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 終了
grabber.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
});
// スレッド開始
thread.start();
}
}