PowerShellからWebカメラを使って静止画をキャプチャーする

| 2009年10月14日水曜日
OpenCVSharpを使って、WebカメラでJpeg形式の静止画を撮影する。
まずは、前回、前々回と同じようにDLLを同じフォルダに置いておく。

今回は、コマンドラインから直接入力してもOK。
(.ps1ファイルにした方が楽だろうけど…)

動作としては、Webカメラの映像を取得して、20フレーム目を静止画として保存している。
ここでは、「foo.jpg」という名前で同じフォルダに保存している。

実際のコードは以下
  1. [void][System.Reflection.Assembly]::LoadFrom( ( Join-Path $pwd OpenCvSharp.dll) )
  2. # Webカメラを取得する。
  3. $camera = [OpenCvSharp.CvCapture]::FromCamera(0)
  4. # 撮影する静止画のサイズを指定する。
  5. # デフォルトサイズ?でよければ、指定しなくてもいい。
  6. $camera.FrameWidth = 640
  7. $camera.FrameHeight = 480
  8. # 起動して直ぐのは、真っ白だったり、暗かったりするから、20フレームくらい撮る。
  9. # 戻り値は OpenCvSharp.IplImage型
  10. 1..20 | % { $iplImage = $camera.QueryFrame() }
  11. # OpenCvSharp.IplImage型をSystem.Drawing.Bitmap型へ変換する
  12. $bmp = [OpenCvSharp.BitmapConverter]::ToBitmap($iplImage)
  13. # Jpegで保存する。
  14. $bmp.Save((Join-Path $pwd "foo.jpg"), [System.Drawing.Imaging.ImageFormat]::Jpeg)
  15. $bmp.Dispose()
  16. $iplImage.Dispose()

0 コメント: