«« ブックマークレットPaste Titleで、ブログをちょびっとだけ素早く更新しよう! | RE) 飲み会等で好きなタイプの芸能人を聞かれたら? »»

DirectShow初心者が、VB.NET 2008からWebカメラにアクセスする為の7つのポイント

2010年11月21日

このエントリーをはてなブックマークに追加
VisualBasic.NET 2008からPCに搭載された(もしくは外付けされた)Webカメラにアクセスする為のポイントを紹介。肝心のソースコードは記載していないので、M.Oshikiri's HomePageさんのページ( http://www.geocities.jp/konbiki/ )を参考にするのがお勧め


先日、Visual Basic .NET 2008で構築しているシステムにWebカメラを組み込んでもらえないか?
という話になり、早速組み込んでみようとしたのですが、思いの外悪戦苦闘したのでメモ。


※動画はイメージであり、本編とは関係ありません。

VB2008から、Webカメラを組み込むのは(初めてな人は)、なんて面倒なんだ!
(最新のVisualStudio2010では、もしかすると改善されているのかもしれないけど)。

1.VBはどこかのシリアルポート等とは違って、Webカメラは標準コンポーネントには含まれていない。

2.Windowsの標準的なAPIにも、Webカメラをアクセスする命令はないみたい。

3.でもDirectXのDirectShowから呼び出す事は可能。
その為、Webカメラアプリケーション開発者は事前にDirectXSDKをインストールする必要がある。
・・・というのはGeekなぺーじ : DirectShowプログラミング [VC++]によると昔の話で、2005年4月以降DirectShowはPlatform SDKに移行したらしい。
そのPlatform SDKですが、VS2008インストールでVC/PlatformSDKが存在しない - MSDN:VisualStudioフォーラムによると、VisualStudio2008では、Windows SDK6.0Aのサブセットがインストールされているので、そちらを使って開発していくものらしいです。

4.そのWindows SDK6.0AのサブセットにあるDirectShowですが、C#及びVBからのアクセスは整備されていないらしいです。
そこで、自分が根性で整備するか、もしくは外部のライブラリ(DLL)やモジュールを使用する必要があるとのこと。
ちなみに、根性で整備するのは、初期化するだけでも相当なコードと理解力が必要なようで、挫折。

5.そこで私が選んだのが「DirectShow関係 - M.Oshikiri's HomePage」で、紹介されている「3.2 サンプルグラバによる静止画取得」
ホームページに『ソースは自由に流用して頂いて結構です。』と記載されているので、遠慮なく解析させてもらいましょう。日本語万歳!ありがとう!!
なお、DirectShowDefine.vbとDirectShowUtility.vbは、どちらもDirectShowにアクセスする為のモジュールなので、ここにアクセスしている関連ファイル(FrmView.vbとFrmImage.vbあたり)を中心にアクセス方法を調べていくのが吉。
ちなみに、DirectShowLibやDShowNETというフリーDLLを使って開発していくのもいいらしいですが、私のVB2008からでは、なぜか"指定されたキャストは有効ではありません。"とかいう例外が発生しまくって、終電後自分のアパートで枕を涙で濡らすはめに。なんで動かへんねん!

6.で、肝心のプログラムの流れですが、以下のような流れらしい。

■グラフの初期化

■デバイス(Webカメラ)の認識

■グラフの作成
サンプルグラバフィルタの生成・設定
 ↓
サンプルグラバをグラフに追加
 ↓
サンプリング開始

■取得できた画像の出力先をpictureboxに割り当てて再生

■(終了時)グラフの解放

7.6番の中にいくつかDirectShow専門用語がでてきますが、その意味は大体以下の通り。

○グラフ
 次の項目で説明しているフィルタの集合体を指します。

○フィルタ
 DirectShowでは、Webカメラからの画像を、様々な処理を経由して一般に扱えるようになるのですが、その途中の処理の一つ一つをフィルタというそうです。
 フィルタの例
 ソースフィルタ・・・Webカメラからデータを取得する
 変換フィルタ・・・圧縮やエフェクトを行う
 レンダラフィルタ・・・ディスプレイやファイルに出力する

○サンプルグラバ
 取得した画像を無加工で出力する、ベーシックなグラフ

ってな感じに理解した。間違っていたらご指摘ください。
で、未経験だと解説ページの言っている意味やサンプルコードの意味不明な例外の山でなかなか理解が進まなかった。
初めてカメラの映像が自分のコードで動き出した時には、殆どM.Oshikiriさんのコードを模写していたとはいえ、ちょっと感激!

とはいえ、もう少しなんとか優しくしてもらえないことか。

 


◇ ◆ お知らせ ◇ ◆

『Store / 行き当たりばったりArcade Amazonなら送料無料!(※一部商品除く) - ○本>Windows開発(DirectX)』について
DirectXの開発資料に是非どうぞ。

>>『Store / 行き当たりばったりArcade Amazonなら送料無料!(※一部商品除く) - ○本>Windows開発(DirectX)』を拡大して覗いてみる
 


投稿者 kuze : 2010年11月21日 01:10


■このエントリーに関連した記事

■「実用ソフト&サイト」カテゴリの最新記事

«« ブックマークレットPaste Titleで、ブログをちょびっとだけ素早く更新しよう! | RE) 飲み会等で好きなタイプの芸能人を聞かれたら? »»


自己紹介
PHPやVBによるコーディングやシステムエンジニアを仕事にしています。
主にiPhoneアプリの紹介やWeb開発などのPC系の話題と、アニメやゲームなどのサブカルな話題を取り扱っています。

[PR]

instagram

カテゴリ

最近のエントリー

最近掲載した画像
  • Surface go購入しました、ちょっとしたコードを弄ったりお絵かきに期待!
  • Surface go購入しました、ちょっとしたコードを弄ったりお絵かきに期待!
  • Surface go購入しました、ちょっとしたコードを弄ったりお絵かきに期待!
  • JAPANGLEの特撮爆破と、はりきり体育ノ介の博士オーバーアクションが見応えあり
  • Super Audio CDはクソ、(最近の)Macで再生できねー!
  • 未来のミライはタイトル&予告編詐欺だった(ネタバレ)
  • 未来のミライはタイトル&予告編詐欺だった(ネタバレ)
  • 先日ドメインとサーバーを引っ越しました
  • 富士山でお鉢巡りをしてきた
  • 富士山でお鉢巡りをしてきた
  • 富士山でお鉢巡りをしてきた
  • 富士山でお鉢巡りをしてきた
  • ニンジャバットマンはとにかくクドい熱血系お馬鹿映画だった(褒め言葉・ネタバレ)

RSS
更新情報はRSSをご利用下さい