ハフ変換
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 = IplImage::load(ARGV.shift) gry = img.BGR2GRAY resultS = gry.GRAY2BGR resultP = resultS.clone linesS = gry.canny(50,200,3).hough_lines(CV_HOUGH_STANDARD, 1, Math::PI/180, 50, 0, 0) linesP = gry.canny(50,200,3).hough_lines(CV_HOUGH_PROBABILISTIC, 1, Math::PI/180, 50, 50, 10) cnt = 250 linesS.each do |l| cos,sin = Math::cos(l.theta), Math::sin(l.theta) x0,y0 = l.rho*cos,l.rho*sin # puts "#{l.rho},#{l.theta}, #{cos},#{sin}" resultS.line!(CvPoint.new(x0-1000*sin,y0+1000*cos), CvPoint.new(x0+1000*sin,y0-1000*cos), {:color=>CvColor::Red,:thickness=>1}) cnt-=1;break if cnt<0 end puts linesS.size linesP.each do |l| # puts "#{l.point1},#{l.point2}" resultP.line!(l.point1, l.point2, {:color=>CvColor::Red,:thickness=>1}) end puts linesP.size original_window.show img hough_windowS.show resultS hough_windowP.show resultP GUI::wait_key