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法でエッジ抽出するフィルタをかけて表示する様にしている。