From 7eb93ccde3b0423af3464df1e82336734759062a Mon Sep 17 00:00:00 2001 From: ser1zw Date: Sat, 19 Mar 2011 20:31:52 +0900 Subject: [PATCH] tested CvMat#hough_lines_standard --- test/samples/lines.jpg | Bin 0 -> 3096 bytes test/test_cvmat_imageprocessing.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 test/samples/lines.jpg diff --git a/test/samples/lines.jpg b/test/samples/lines.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cbe8fcd209e2ccfeb98c7d8913a09373ca8c0dff GIT binary patch literal 3096 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 RD2NNNv@8Ew`Vr8;KL7=7bpikY literal 0 HcmV?d00001 diff --git a/test/test_cvmat_imageprocessing.rb b/test/test_cvmat_imageprocessing.rb index 4c08db3..fac9acb 100755 --- a/test/test_cvmat_imageprocessing.rb +++ b/test/test_cvmat_imageprocessing.rb @@ -11,6 +11,7 @@ class TestCvMat_imageprocessing < OpenCVTestCase FILENAME_LENA256x256 = File.expand_path(File.dirname(__FILE__)) + '/samples/lena-256x256.jpg' FILENAME_LENA32x32 = File.expand_path(File.dirname(__FILE__)) + '/samples/lena-32x32.jpg' FILENAME_CONTOURS = File.expand_path(File.dirname(__FILE__)) + '/samples/contours.jpg' + FILENAME_LINES = File.expand_path(File.dirname(__FILE__)) + '/samples/lines.jpg' def test_sobel mat0 = CvMat.load(FILENAME_LENA256x256, CV_LOAD_IMAGE_GRAYSCALE) @@ -1274,5 +1275,32 @@ class TestCvMat_imageprocessing < OpenCVTestCase mat1 = mat0.watershed(marker) assert_equal('ee6bec03296039c8df1899d3edc4684e', hash_img(mat1)) end + + def test_hough_lines_standard + mat0 = CvMat.load(FILENAME_LINES, CV_LOAD_IMAGE_ANYCOLOR | CV_LOAD_IMAGE_ANYDEPTH) + # make a binary image + mat = CvMat.new(mat0.rows, mat0.cols, :cv8u, 1) + (mat0.rows * mat0.cols).times { |i| + mat[i] = (mat0[i][0] <= 100) ? CvScalar.new(0) : CvScalar.new(255); + } + seq = mat.hough_lines_standard(1, Math::PI / 180, 65) + assert_equal(4, seq.size) + + # Uncomment the following lines to show the result + # seq.each { |line| + # cos = Math::cos(line.theta) + # sin = Math::sin(line.theta) + # x0 = line.rho * cos + # y0 = line.rho * sin + # pt1 = CvPoint.new + # pt2 = CvPoint.new + # pt1.x = x0 + mat.width * 10 * (-sin) + # pt1.y = y0 + mat.height * 10 * (cos) + # pt2.x = x0 - mat.width * 10 * (-sin) + # pt2.y = y0 - mat.height * 10 * (cos) + # mat0.line!(pt1, pt2, :color => CvColor::Red, :thickness => 1, :line_type => :aa) + # } + # snap mat0 + end end