PowerShellでWebカメラの映像を保存する

| 2009年10月14日水曜日
OpenCVSharpを使ってWebカメラの映像を動画ファイルで保存してみる。
動画の保存は、OpenCVSharpのサンプルで「VideoWriter.cs」というのがあるのでそれを参考にする。

今回は、OpenCVSharpとサンプルに入っている下記の5個のDLLが必要になる。

・cv200.dll
・cxcore200.dll
・highgui200.dll
・opencv_ffmpeg200.dll
・OpenCvSharp.dll

これらのDLLを同じフォルダにコピーしておく。
サンプルでは200フレーム分を保存している。
実際のコードは以下
  1. [void][System.Reflection.Assembly]::LoadFrom( ( Join-Path $pwd OpenCvSharp.dll) )
  2. $camera = [OpenCvSharp.CvCapture]::FromCamera(0)
  3. $size = New-Object OpenCvSharp.CvSize($camera.FrameWidth, $camera.FrameHeight)
  4. # 「foo.avi」で保存する
  5. $videoWriter = New-Object OpenCvSharp.CvVideoWriter("foo.avi","XVID", 15, $size)
  6. $font = New-Object OpenCvSharp.CvFont([OpenCvSharp.FontFace]::HersheyComplex, 0.7, 0.7)
  7. $point = New-Object OpenCvSharp.CvPoint(10,20)
  8. $color = New-Object OpenCvSharp.CvColor(0,255,100)
  9. # (1) 画面に表示しなくてよければ、必要ない
  10. $window = New-Object OpenCvSharp.CvWindow("Capture", [OpenCvSharp.WindowMode]::AutoSize)
  11. # 200フレーム分キャプチャーする
  12. 1..200 | % {
  13. [OpenCvSharp.CvWindow]::WaitKey(10)
  14. $frame = $camera.QueryFrame()
  15. $str = [String]::Format("{0}[frame]",$_)
  16. # 左上に緑色でフレーム数が表示される
  17. $frame.PutText($str, $point, $font, $color)
  18. $videoWriter.WriteFrame($frame)
  19. $window.ShowImage($frame) # (1)
  20. }
  21. $frame.Dispose()
  22. $window.Dispose() # (1)
  23. $videoWriter.Dispose()
  24. $camera.Dispose()

0 コメント: