Processing: 動画上に連続した線分を描く
Processing(2.2.1)で、カメラから取り込んだ動画上に連続して線分を描く。右クリックでクリア。
import processing.video.*; Capture camera; Point[] points = {}; //線分の端点を保持する配列 void setup() { size(640, 480); smooth(); String[] cameras = Capture.list(); //利用可能な動画入力の配列を取得 if (cameras.length == 0) { println("There are no cameras available for capture."); exit(); } else { println("Available cameras:"); for (int i = 0; i < cameras.length; i++) { println(cameras[i]); } camera = new Capture(this, cameras[0]); //MacのFaceTimeカメラの場合0番目 camera.start(); } } void draw() { if (camera.available() == true) { camera.read(); } image(camera, 0, 0); //カメラ入力を表示 stroke(255, 0, 0); //赤線 strokeWeight(5); //太さ5 for (int i = 1; i < points.length; i++) { line(points[i-1].x, points[i-1].y, points[i].x, points[i].y); //線分の描画 } } void mouseClicked() { if(mouseButton == LEFT) { //左クリックで線分(端点)の追加 Point point = new Point(mouseX, mouseY); points = (Point[])append(points, point); } else if(mouseButton == RIGHT) { //右クリックで線のクリア points = new Point[0]; } } /** * 線の端点のクラス */ class Point { int x, y; Point(int ex, int ey) { x = ex; y = ey; } }