正月はメシ食って酒のんで寝て、という生活をしていたはずなのに終わってみれば50kbテープ起こし、今学期のプレゼン資料全部印刷して再チェック入れ、プレゼン内容もテープ起こし、本を3冊半読む、など自分でもよくわからない正月だったり。

つーか今年と去年の境界がわからないんだけど。

*****

コードはいくつかあるので適当にとってください

SourceCode(VisualStudio2005 C#2.0)

DirectShow.NETというライブラリで、webcamから静止画を撮影し、JPEG形式でファイルに保存するのを作ってみました。上越新幹線の自由席の通路で完成した。

以前Twain機器としてwebcamを扱う方法もやったんだけど、古いLogitecのwebcamでしか動かないので、DirectShow.NETでやってみたわけ。

C#ではDirectX開発環境としてManagedDirectXが使えるが、肝心のDirectShowが無いのでwebcamが使えない。DirectShow.NETはそれを保管するオープンソースプロジェクト。今回はそのサンプルを自分用に改造した(静止画キャプチャに関係の無い部分を削った)ので公開。

こんなサンプルが入っています。

DirectShow.NET capture

左がプレビュー、右が撮影したイメージ

こんな感じで撮影して、ファイルに保存出来ます。カメラのプロトタイピングに使えますねえ

FileName=”zanmai.jpg”;

FileFormat=ImageFormat.Jpeg;

CaptureImage();

ちなみに動画のキャプチャがしたい場合はDirectX.Captureがオススメ。DirectShow.NETのラッパーで、こいつもかなり簡単に撮影できる。

でも色々試している時に間違えて録画し続けて、HDDのどこかに俺の開発中のアホ面が1GBほど保存されて行方不明になっているという…

やってくれた喃…



撮影したキャプチャデータはBitmapで帰ってくるので、PictureBox.Imageに描画している。Imageクラスにはファイルに保存するメソッドがあるので、Bitmapデータさえあればいいんだな。

暇をみて、コールバック登録してその関数にBitmapを返すような仕様に変えよう。

ちなみにBitmapデータだと、こういう画像処理も結構簡単にできる。

アルゴリズム入門 : 第 3 章 画像処理入門 1を見るとわかる。

新幹線の中でwebcamとArduino出してプログラミングしてるところをJPEGでキャプチャ

新幹線プログラミング