ruby-opencvでカメラキャプチャして画像加工
require 'opencv' include OpenCV win = GUI::Window.new("win") cap = CvCapture.open(0) mode = nil loop do out = img = cap.query next unless img case mode when 'c'; out = img.BGR2GRAY.canny(120,200) end win.show out key = GUI::wait_key(100) if key mode = key.chr break if mode == 'q' end end
CvCapture.open()は、文字列で引数指定すると動画ファイルをオープン、
数字指定でPCに接続されているN番目のキャプチャデバイスをオープンする。
なので、上記の様に CvCapture.open(0) すると、最初に見つかったキャプチャデバイス(例えば USB接続されている Webカメラ)から動画取込できる状態になる。
上記では、'c'を押されたら、取り込んだ画像をモノクロ変換して(RGBをGRAYスケールに変換)、canny法でエッジ抽出するフィルタをかけて表示する様にしている。