OpenCVSharpを使ってWebカメラの映像を動画ファイルで保存してみる。
動画の保存は、OpenCVSharpのサンプルで「VideoWriter.cs」というのがあるのでそれを参考にする。
今回は、OpenCVSharpとサンプルに入っている下記の5個のDLLが必要になる。
・cv200.dll
・cxcore200.dll
・highgui200.dll
・opencv_ffmpeg200.dll
・OpenCvSharp.dll
これらのDLLを同じフォルダにコピーしておく。
サンプルでは200フレーム分を保存している。
実際のコードは以下
- [void][System.Reflection.Assembly]::LoadFrom( ( Join-Path $pwd OpenCvSharp.dll) )
- $camera = [OpenCvSharp.CvCapture]::FromCamera(0)
- $size = New-Object OpenCvSharp.CvSize($camera.FrameWidth, $camera.FrameHeight)
- # 「foo.avi」で保存する
- $videoWriter = New-Object OpenCvSharp.CvVideoWriter("foo.avi","XVID", 15, $size)
- $font = New-Object OpenCvSharp.CvFont([OpenCvSharp.FontFace]::HersheyComplex, 0.7, 0.7)
- $point = New-Object OpenCvSharp.CvPoint(10,20)
- $color = New-Object OpenCvSharp.CvColor(0,255,100)
- # (1) 画面に表示しなくてよければ、必要ない
- $window = New-Object OpenCvSharp.CvWindow("Capture", [OpenCvSharp.WindowMode]::AutoSize)
- # 200フレーム分キャプチャーする
- 1..200 | % {
- [OpenCvSharp.CvWindow]::WaitKey(10)
- $frame = $camera.QueryFrame()
- $str = [String]::Format("{0}[frame]",$_)
- # 左上に緑色でフレーム数が表示される
- $frame.PutText($str, $point, $font, $color)
- $videoWriter.WriteFrame($frame)
- $window.ShowImage($frame) # (1)
- }
- $frame.Dispose()
- $window.Dispose() # (1)
- $videoWriter.Dispose()
- $camera.Dispose()
0 コメント:
コメントを投稿