2015-01-01から1年間の記事一覧

ハフ変換

ruby-opencvでハフ変換をして、画像の線分抽出をする。 require "opencv" include OpenCV original_window = GUI::Window.new "original" hough_windowS = GUI::Window.new "hough(standard)" hough_windowP = GUI::Window.new "hough(probabilistic)" img =…

シングルプレーンの取り出しとマージ

OpenCV 2.4.11(VS10), ActiveScriptRuby 2.2(32bit), ruby-opencv-0.0.14RGB画像から、Gプレーンのみ取り出し、RとBをゼロで埋めた画像を作成したいのだけど、感覚的に書いたコードだとエラーが出る。b,g,r = img.split b2 = IplImage.merge(b) g2 = IplImag…

GalaxyNote3 をPCからUSBカメラとして使う

今手元にあるPCにはカメラが付いていない。 なので、Androidスマホである GalaxyNote3 をUSBカメラとして使えるか試してみる。『Androidスマホ内蔵カメラをパソコン用の「Webカメラ」として使おう:「DroidCam」(開発者:Dev47Apps)』 http://pc.nikkeibp.…

ruby-opencvでマウスイベント処理

require 'opencv' include OpenCV w = GUI::Window.new("w") img = IplImage.new(340, 200, CV_8U, 3) img.fill!(CvColor::White) # 真白に塗り潰す # p = nil opt = {:color=>CvColor::Green, :thickness=>1} w.on_mouse do |m| # 左クリックで線を太くする…

ruby-opencvで図形描画

require 'opencv' include OpenCV w = GUI::Window.new("w") img = IplImage.new(340, 200, CV_8U, 3) img.fill!(CvColor::White) # 真白に塗り潰す # img.line!(CvPoint.new(10,140),CvPoint.new(330,190), {:color=>CvColor::Red,:thickness=>4}) img.rect…

ruby-opencvでカラーチャネルを分離したり

splitでblue,green,redを分離できるのだけど、シングルプレーンからIplImage.merge(blue,green,red,nil)とかしても、BGR画像を復元できない。 何故?? require 'opencv' include OpenCV captureDevice,mode = 0,nil if ARGV.size > 0 captureDevice = ARGV.sh…

ruby-opencvで色々なフィルタを試す

カメラで絵を取り込みながら、或いは動画を再生させながら、キーを押して、色々なフィルタを試す。 require 'opencv' include OpenCV captureDevice,mode = 0,nil if ARGV.size > 0 captureDevice = ARGV.shift captureDevice = captureDevice.to_i if /^\d$…

ruby-opencvでのROIの操作

OpenCVには「ROI」(Region Of Interest:注目領域)という概念があり、画像に対してこれを設定すると、その領域に対してのみ種々の操作が行なわれる様になる。ROIを設定している状態で画像を描画させるとROIの部分のみ描画されるし、copyを行なうとROIの部分の…

irbからOpenCVを叩く

irbを使うとObject.methodsでメソッド一覧も確認できるし、フィルタの効果の確認とかもすぐできるし便利。 irb(main):001:0> require 'opencv';include OpenCV => Object irb(main):002:0> img=CvMat.load("Tulip.jpg") => #<OpenCV::CvMat:0x7d2080> irb(main):003:0> w=GUI::Window</opencv::cvmat:0x7d2080>…

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…

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_…

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) i…

ruby-opencvで動画ファイル再生

『Class: OpenCV::CvCapture ― Documentation for ruby-opencv (0.0.14)』 http://www.rubydoc.info/gems/ruby-opencv/OpenCV/CvCapture require 'opencv' include OpenCV vid = CvCapture.open(ARGV.shift) win = GUI::Window.new('win') printf("%d x %d, …

ruby-opencvのサンプルソースとか

ruby-opencvの残念なのは、ドキュメントとか情報が少ないところ。 でも、標準添付の examples だけでも実は結構情報がある。一通り眺めるだけで、かなり色々できる。 irbから動かして、どんなメソッドがあるか調べることもできるし…で、ドキュメントを充実さ…

Windows7にruby-opencv環境のセッティング

色々調べたりトライしたりした結果、Windows7では32bit/64bitによらず下記の環境が一番良さそうなことがわかった。 OpenCV-2.4.11 Microsoft VisualStudio Express 10 ActiveScriptRuby 2.2(32bit版) cygwin ruby でビルドする方法もあるが、パッチを当てる…