ruby-opencvで色々なフィルタを試す
カメラで絵を取り込みながら、或いは動画を再生させながら、キーを押して、色々なフィルタを試す。
require 'opencv' include OpenCV captureDevice,mode = 0,nil 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 loop do out = inp = cap.query break unless inp case mode when 'a'; out = inp.BGR2GRAY.add(100) #グレースケールにして白っぽくする when 'b'; out = inp.smooth(CV_BLUR) #単純平滑化 when 'c'; out = inp.BGR2GRAY.canny(120,200) #canny法でエッジ抽出 when 'd'; out = inp.BGR2GRAY.dilate #ディレーション when 'e'; out = inp.BGR2GRAY.erode #エロージョン when 'f'; out = inp.flip #左右反転 when 'g'; out = inp.smooth(CV_GAUSSIAN) #ガウシアン平滑化 when 'q'; break end win.show out key = GUI::wait_key(frame_msec) mode = key.chr if key end