ruby-opencvでキャプチャ動画を保存
引数指定したデバイスorファイルを動画保存する。
require 'opencv' include OpenCV captureDevice = 0 if ARGV.size > 0 captureDevice = ARGV.shift captureDevice = captureDevice.to_i if /^\d$/ =~ captureDevice end win = GUI::Window.new("win") cap = CvCapture.open(captureDevice) begin fps = cap.fps if fps > 67 or fps < 5 # 変なfpsの時は10fps(100msec間隔)にする fps = 10 end rescue fps = 10 end frame_msec = 1000/fps out = CvVideoWriter.new("out.avi", 'XVID', fps, CvSize.new(cap.width, cap.height)) loop do img = cap.query break unless img win.show img out.write(img) c = GUI::wait_key(frame_msec) break if c == 27 end out.close
指定されたファイルをオープン、
動画再生しつつ、"out.avi"として保存する。
C言語だと cvCreateVideoWriter() とか cvSize() とかをコールするんだが、
ruby-opencvだと CvXxx.new()である。
今手元にUSBカメラとかのキャプチャデバイスが無いので、上記でちゃんと動くかどうかは未確認。
(mp4を読み込んで、avi保存できることだけ確認した)