C#でDirectXからwebcamを使うのがめんどいので、processingにwebcam captureさせてC#に戻す様にした。

まず、s.h.log: Proce55ingでwebcam撮影、ファイルに保存をSocketから操作できるようにしてみた。

Source Code (Processing 0124 Beta)

socketで5800portに p を1文字送れば撮影してjpegで保存する。

ついでにC#用のwrapperも作った。

こんな感じで撮影できる。

usingOrg.Shokai.Util.Capture;

ProcesingSocketCamerap5cam=newProcesingSocketCamera();

p5cam.Host=”localhost”;

p5cam.Port=5800;

if(!p5cam.Connected)p5cam.Connect();

p5cam.Capture();

jpegファイルの生成をFileSystemWatcher等で監視しておけばよい。

ただし、saveFrame()は生成したファイルに追記している様なので、FileSystemWatcherのCreateイベント直後に読み込むとファイルサイズ0のjpegファイルになってしまう。

FileCreateイベント後に

FileInfo fInfo;

while (!( (fInfo=new FileInfo(e.FullPath)).Length > 0)) ;

とかで待機してから、C#側から読み込んだらうまくいった。