ruby-opencvでtrackbarを使って色々なパラメータを試す

Cで書くよりrubyで書いた方が、トラックバーも簡単に使える。

require 'opencv'
include OpenCV

inp_win = GUI::Window.new('Input')
out_win = GUI::Window.new('Output')

filename = ARGV.shift
inp_img = CvMat.load(filename)

inp_win.show inp_img
out_win.set_trackbar("TraBar",1000,150) do |v|
  out_win.show inp_img.BGR2GRAY.canny(120,v)
end
out_win.show inp_img.BGR2GRAY.canny(120,150)

GUI::wait_key

Cで上記コードを書こうとしたら、わざわざコールバック用の関数を定義して、それをトラックバーにバインドして、トラックバー自体をウィンドウにバインドして…
とかしなければいけないんだけど、ruby-opencvなら、win.set_trackbar(){block;}だけでOK。

トラックバーを左右に動かす度に動かした後の値でblockがコールされて、表示されてる絵が更新される。