note


EclipseでProcessingを横着に使う設定(Mac)

Eclipseを使って、Processingをコーディングしたい。
むしろ、Javaプログラムの1要素としてProcessingを利用したい場合があります。Javaの無限のライブラリも使えますので。
例えば、Processingでwebカメラの映像をキャプチャさせて、それをJavaでゴニョゴニョしたいとき。

もちろん、ProcessingのライブラリをEclipseにインポートするのですが、
横着なやり方を紹介します。

(1) Processing.app内のライブラリをどっかにごっそりコピー

%cp -r /Applications/Processing.app/Contents  /Users/ユーザ名/Desktop/

もしくは、Finderを使って、Processing.appの中身(パッケージの中身)をどっかにコピー

例ではデスクトップにコピーしてますが、どこでもいいです。
なぜコピーするかというと、以下のeclipseの外部ライブラリ追加のところで直接Processing.app内のリソースへアクセスができなかったからです。
だから、横着にコピーしました。

(2) Eclipseから新規プロジェクト作成し、メニューのProject -> Properties でProcessingライブラリへBuild Pathを設定。

Add External JARs(外部ライブラリの追加)から、さっきコピーした中身にあるProcessingのライブラリを追加。

Processingの基本ライブラリは
コピーしたディレクトリの中の

Contents/Resources/Java/core/library


内に、カメラから映像キャプチャなどのライブラリは、

Contents/Resources/Java/modes/java/libraries/


以下、例えばvideo関係は

Contents/Resources/Java/modes/java/libraries/video/library


内にあります。
こんな感じ。

Pasted Graphic


(3) 後はコードを書くだけ。

例えば、ProcessingサンプルのWEBカメラから画像をキャプチャして表示するプログラムは、こんな感じです。


import processing.video.*;
import processing.core.*;

public class VideoCapTest extends PApplet{

Capture
cam;


public void setup() {
size(640, 480,
P2D);

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]);
}

// The camera can be initialized directly using an element
// from the array returned by list():
cam = new Capture(this, cameras[0]);
cam.start();
}
}

public void draw() {
if (cam.available() == true) {
cam.read();
}
image(
cam, 0, 0);
// The following does the same, and is faster when just drawing the image
// without any additional resizing, transformations, or tint.
//set(0, 0, cam);
}


}



おまけ
Processingからカメラでキャプチャした画像を、BufferedImageへ変換の例。


BufferedImage buf = new BufferedImage(320,240, 1);
buf.getGraphics().drawImage(
cam.getImage(),0,0,null);