正月はメシ食って酒のんで寝て、という生活をしていたはずなのに終わってみれば50kbテープ起こし、今学期のプレゼン資料全部印刷して再チェック入れ、プレゼン内容もテープ起こし、本を3冊半読む、など自分でもよくわからない正月だったり。
つーか今年と去年の境界がわからないんだけど。
*****
コードはいくつかあるので適当にとってください
SourceCode(VisualStudio2005 C#2.0)
DirectShow.NETというライブラリで、webcamから静止画を撮影し、JPEG形式でファイルに保存するのを作ってみました。上越新幹線の自由席の通路で完成した。
以前Twain機器としてwebcamを扱う方法もやったんだけど、古いLogitecのwebcamでしか動かないので、DirectShow.NETでやってみたわけ。
C#ではDirectX開発環境としてManagedDirectXが使えるが、肝心のDirectShowが無いのでwebcamが使えない。DirectShow.NETはそれを保管するオープンソースプロジェクト。今回はそのサンプルを自分用に改造した(静止画キャプチャに関係の無い部分を削った)ので公開。
こんなサンプルが入っています。
左がプレビュー、右が撮影したイメージ
こんな感じで撮影して、ファイルに保存出来ます。カメラのプロトタイピングに使えますねえ
FileName=”zanmai.jpg”;
FileFormat=ImageFormat.Jpeg;
CaptureImage();
ちなみに動画のキャプチャがしたい場合はDirectX.Captureがオススメ。DirectShow.NETのラッパーで、こいつもかなり簡単に撮影できる。
でも色々試している時に間違えて録画し続けて、HDDのどこかに俺の開発中のアホ面が1GBほど保存されて行方不明になっているという…
やってくれた喃…
撮影したキャプチャデータはBitmapで帰ってくるので、PictureBox.Imageに描画している。Imageクラスにはファイルに保存するメソッドがあるので、Bitmapデータさえあればいいんだな。
暇をみて、コールバック登録してその関数にBitmapを返すような仕様に変えよう。
ちなみにBitmapデータだと、こういう画像処理も結構簡単にできる。
アルゴリズム入門 : 第 3 章 画像処理入門 1を見るとわかる。