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_opencv.rb
2016-05-05 08:16:39 +09:00

153 lines
3.8 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 TestOpenCV < OpenCVTestCase
def test_imread
mat = Cv::imread(FILENAME_CAT, IMREAD_GRAYSCALE)
assert_equal(Mat, mat.class)
assert_equal(375, mat.cols)
assert_equal(500, mat.rows)
assert_equal(CV_8U, mat.depth)
assert_equal(1, mat.channels)
mat = Cv::imread(FILENAME_CAT, IMREAD_ANYDEPTH | IMREAD_ANYCOLOR)
assert_equal(Mat, mat.class)
assert_equal(375, mat.cols)
assert_equal(500, mat.rows)
assert_equal(CV_8U, mat.depth)
assert_equal(3, mat.channels)
assert_raise(ArgumentError) {
Cv::imread
}
assert_raise(ArgumentError) {
Cv::imread(FILENAME_CAT)
}
assert_raise(TypeError) {
Cv::imread(FILENAME_CAT, DUMMY_OBJ)
}
assert_raise(StandardError) {
Cv::imread('file/does/not/exist', 0)
}
end
def test_imdecode
src = Cv::imread(FILENAME_LENA32x32, IMREAD_ANYDEPTH | IMREAD_ANYCOLOR)
buf = src.imencode('.jpg')
m = Cv::imdecode(buf, IMREAD_ANYDEPTH | IMREAD_ANYCOLOR)
assert_equal(src.class, m.class)
assert_equal(src.rows, m.rows)
assert_equal(src.cols, m.cols)
assert_equal(src.depth, m.depth)
assert_equal(src.channels, m.channels)
m = Cv::imdecode(buf, IMREAD_GRAYSCALE)
assert_equal(src.class, m.class)
assert_equal(src.rows, m.rows)
assert_equal(src.cols, m.cols)
assert_equal(CV_8U, m.depth)
assert_equal(1, m.channels)
assert_raise(TypeError) {
Cv::imdecode(DUMMY_OBJ, IMREAD_GRAYSCALE)
}
assert_raise(TypeError) {
Cv::imdecode(buf, DUMMY_OBJ)
}
# w = Window.new('Decoded')
# w.show(m)
# w.wait_key
end
def test_merge
m = Mat::zeros(1, 1, CV_8U)
b = m + 1
g = m + 2
r = m + 3
a = Cv::merge([b, g, r])
assert_equal(b.class, a.class)
assert_equal(b.rows, a.rows)
assert_equal(b.cols, a.cols)
assert_equal(b.depth, a.depth)
assert_equal(3, a.channels)
assert_equal(b[0, 0][0], a[0, 0][0])
assert_equal(g[0, 0][0], a[0, 0][1])
assert_equal(r[0, 0][0], a[0, 0][2])
assert_raise(TypeError) {
Cv::merge(DUMMY_OBJ)
}
assert_raise(TypeError) {
Cv::merge([DUMMY_OBJ])
}
end
def test_hconcat
m1 = Mat::ones(2, 2, CV_8U) + 1
m2 = Mat::ones(2, 2, CV_8U) + 2
m = Cv::hconcat([m1, m2]);
assert_equal(m1.class, m1.class)
assert_equal(m1.rows, m.rows)
assert_equal(m1.cols + m2.cols, m.cols)
assert_equal(m1.depth, m.depth)
assert_equal(m1.channels, m.channels)
m1.rows.times { |r|
(m1.cols + m2.cols).times { |c|
expected = (c < m1.cols) ? m1[r, c][0] : m2[r, c - m1.cols][0]
assert_equal(expected, m[r, c][0])
}
}
assert_raise(TypeError) {
Cv::hconcat(DUMMY_OBJ)
}
assert_raise(TypeError) {
Cv::hconcat([DUMMY_OBJ])
}
# img = Cv::imread(FILENAME_LENA256x256, -1)
# dst = Cv::hconcat([img, img])
# Cv::Window.new('hconcat').show(dst)
# Cv::wait_key
end
def test_vconcat
m1 = Mat::ones(2, 2, CV_8U) + 1
m2 = Mat::ones(2, 2, CV_8U) + 2
m = Cv::vconcat([m1, m2]);
assert_equal(m1.class, m1.class)
assert_equal(m1.rows + m2.rows, m.rows)
assert_equal(m1.cols, m.cols)
assert_equal(m1.depth, m.depth)
assert_equal(m1.channels, m.channels)
(m1.rows + m2.rows).times { |r|
m1.cols.times { |c|
expected = (r < m1.rows) ? m1[r, c][0] : m2[r - m1.rows, c][0]
assert_equal(expected, m[r, c][0])
}
}
assert_raise(TypeError) {
Cv::vconcat(DUMMY_OBJ)
}
assert_raise(TypeError) {
Cv::vconcat([DUMMY_OBJ])
}
# img = Cv::imread(FILENAME_LENA256x256, -1)
# dst = Cv::vconcat([img, img])
# Cv::Window.new('vconcat').show(dst)
# Cv::wait_key
end
end