1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00
ruby-opencv/test/test_mat_imgproc.rb
2016-04-10 01:46:42 +09:00

214 lines
5.7 KiB
Ruby
Executable file

#!/usr/bin/env ruby
# -*- mode: ruby; coding: utf-8 -*-
require 'opencv'
require File.expand_path(File.dirname(__FILE__)) + '/helper'
include Cv
class TestCvMat < OpenCVTestCase
def test_sobel
m0 = Cv::imread(FILENAME_LENA256x256, 0)
sobel = []
sobel << m0.sobel(CV_32F, 1, 1)
sobel << m0.sobel(CV_32F, 1, 1, 5, 0.5, 32, BORDER_CONSTANT)
sobel.each { |m|
assert_equal(m0.rows, m.rows)
assert_equal(m0.cols, m.cols)
assert_equal(CV_32F, m.depth)
assert_equal(m0.dims, m.dims)
assert_equal(m0.channels, m.channels)
}
assert_raise(TypeError) {
m0.sobel(DUMMY_OBJ, 1, 1, 5, 0.5, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.sobel(CV_32F, DUMMY_OBJ, 1, 5, 0.5, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.sobel(CV_32F, 1, DUMMY_OBJ, 5, 0.5, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.sobel(CV_32F, 1, 1, DUMMY_OBJ, 0.5, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.sobel(CV_32F, 1, 1, 5, DUMMY_OBJ, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.sobel(CV_32F, 1, 1, 5, 0.5, DUMMY_OBJ, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.sobel(CV_32F, 1, 1, 5, 0.5, 32, DUMMY_OBJ)
}
# w = Window.new('Sobel')
# w.show(m0.sobel(CV_32F, 1, 1))
# Cv::wait_key
end
def test_canny
m0 = Cv::imread(FILENAME_LENA256x256, 0)
canny = []
canny << m0.canny(50, 200)
canny << m0.canny(50, 200, 5, true)
canny.each { |m|
assert_equal(m0.rows, m.rows)
assert_equal(m0.cols, m.cols)
assert_equal(m0.depth, m.depth)
assert_equal(m0.dims, m.dims)
assert_equal(m0.channels, m.channels)
}
assert_raise(TypeError) {
m0.canny(DUMMY_OBJ, 200, 5, true)
}
assert_raise(TypeError) {
m0.canny(50, DUMMY_OBJ, 5, true)
}
assert_raise(TypeError) {
m0.canny(50, 200, DUMMY_OBJ, true)
}
assert_nothing_raised {
m0.canny(50, 200, 5, DUMMY_OBJ)
}
# w = Window.new('Canny')
# w.show(m0.canny(50, 200))
# Cv::wait_key
end
def test_laplacian
m0 = Cv::imread(FILENAME_LENA256x256, 0)
laplacian = []
laplacian << m0.laplacian(CV_32F)
laplacian << m0.laplacian(CV_32F, 5, 0.5, 32, BORDER_CONSTANT)
laplacian.each { |m|
assert_equal(m0.rows, m.rows)
assert_equal(m0.cols, m.cols)
assert_equal(CV_32F, m.depth)
assert_equal(m0.dims, m.dims)
assert_equal(m0.channels, m.channels)
}
assert_raise(TypeError) {
m0.laplacian(DUMMY_OBJ, 5, 0.5, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.laplacian(CV_32F, DUMMY_OBJ, 0.5, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.laplacian(CV_32F, 5, DUMMY_OBJ, 32, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.laplacian(CV_32F, 5, 0.5, DUMMY_OBJ, BORDER_CONSTANT)
}
assert_raise(TypeError) {
m0.laplacian(CV_32F, 5, 0.5, 32, DUMMY_OBJ)
}
# w = Window.new('Laplacian')
# w.show(m0.laplacian(CV_32F))
# Cv::wait_key
end
def test_add_weighted
m0 = Mat.ones(3, 3, CV_32F) * 32
m1 = Mat.ones(3, 3, CV_32F) * 64
results = []
results << Cv::add_weighted(m0, 0.5, m1, 0.5, 0)
results << Cv::add_weighted(m0, 0.5, m1, 0.5, 32, CV_32F)
results.each { |m|
assert_equal(m0.rows, m.rows)
assert_equal(m0.cols, m.cols)
assert_equal(CV_32F, m.depth)
assert_equal(m0.dims, m.dims)
assert_equal(m0.channels, m.channels)
}
assert_raise(TypeError) {
Cv::add_weighted(DUMMY_OBJ, 0.5, m1, 0.5, 32, CV_32F)
}
assert_raise(TypeError) {
Cv::add_weighted(m0, DUMMY_OBJ, m1, 0.5, 32, CV_32F)
}
assert_raise(TypeError) {
Cv::add_weighted(m0, 0.5, DUMMY_OBJ, 0.5, 32, CV_32F)
}
assert_raise(TypeError) {
Cv::add_weighted(m0, 0.5, m1, DUMMY_OBJ, 32, CV_32F)
}
assert_raise(TypeError) {
Cv::add_weighted(m0, 0.5, m1, 0.5, DUMMY_OBJ, CV_32F)
}
assert_raise(TypeError) {
Cv::add_weighted(m0, 0.5, m1, 0.5, 32, DUMMY_OBJ)
}
end
def test_blur
m0 = Cv::imread(FILENAME_LENA256x256, -1)
ksize = Cv::Size.new(3, 3)
anchor = Cv::Point.new(1, 1)
blurs = []
blurs << m0.blur(ksize)
blurs << m0.blur(ksize, anchor)
blurs << m0.blur(ksize, anchor, Cv::BORDER_REPLICATE)
blurs.each { |m|
assert_equal(m0.rows, m.rows)
assert_equal(m0.cols, m.cols)
assert_equal(m0.depth, m.depth)
assert_equal(m0.dims, m.dims)
assert_equal(m0.channels, m.channels)
}
assert_raise(TypeError) {
m0.blur(DUMMY_OBJ)
}
assert_raise(TypeError) {
m0.blur(ksize, DUMMY_OBJ)
}
assert_raise(TypeError) {
m0.blur(ksize, anchor, DUMMY_OBJ)
}
# w = Window.new('Blur')
# w.show(m0.blur(ksize, anchor, Cv::BORDER_REPLICATE))
# Cv::wait_key
end
def test_gaussian_blur
m0 = Cv::imread(FILENAME_LENA256x256, -1)
ksize = Cv::Size.new(3, 3)
gaussian_blurs = []
gaussian_blurs << m0.gaussian_blur(ksize, 3)
gaussian_blurs << m0.gaussian_blur(ksize, 3, 5)
gaussian_blurs << m0.gaussian_blur(ksize, 3, 5, Cv::BORDER_REPLICATE)
gaussian_blurs.each { |m|
assert_equal(m0.rows, m.rows)
assert_equal(m0.cols, m.cols)
assert_equal(m0.depth, m.depth)
assert_equal(m0.dims, m.dims)
assert_equal(m0.channels, m.channels)
}
assert_raise(TypeError) {
m0.gaussian_blur(ksize, DUMMY_OBJ)
}
assert_raise(TypeError) {
m0.gaussian_blur(ksize, 3, DUMMY_OBJ)
}
assert_raise(TypeError) {
m0.gaussian_blur(ksize, 3, 5, DUMMY_OBJ)
}
# w = Window.new('Gaussian blur')
# w.show(m0.gaussian_blur(ksize, 3, 5, Cv::BORDER_REPLICATE))
# Cv::wait_key
end
end