ruby-opencv/test/test_cvmat_matching.rb

58 lines
1.5 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# -*- mode: ruby; coding: utf-8 -*-
require 'test/unit'
require 'opencv'
require File.expand_path(File.dirname(__FILE__)) + '/helper'
include OpenCV
# Tests for matching functions of OpenCV::CvMat
class TestCvMat_matching < OpenCVTestCase
def setup
@query = read_test_image('query.png')
@images = ['1.png', '2.png', '3.png'].map{|f| read_test_image('train', f)}
end
def data_dir
File.join(File.dirname(__FILE__), '..', 'examples', 'matching_to_many_images')
end
def read_test_image(*path)
CvMat.load File.join(data_dir, *path), CV_LOAD_IMAGE_GRAYSCALE
end
def test_match_descriptors
matchs = @query.match_descriptors(@images)
match_index, count = matchs.max_by {|image_index, count| count}
assert_equal 2, match_index
end
def test_match_descriptors_with_empty_image_array
assert_equal({}, @query.match_descriptors([]))
end
def test_match_descriptors_with_wrong_detector_type_argument
assert_raise ArgumentError do
@query.match_descriptors(@images, "Wrong")
end
end
def test_match_descriptors_with_wrong_descriptor_type_argument
assert_raise ArgumentError do
@query.match_descriptors(@images, "SURF", "wrong")
end
end
def test_match_descriptors_with_wrong_matcher_type_argument
assert_raise ArgumentError do
@query.match_descriptors(@images, "SURF", "SURF", "wrong")
end
end
def test_match_descriptors_with_invalid_image_array
assert_raise TypeError do
@query.match_descriptors([DUMMY_OBJ, DUMMY_OBJ])
end
end
end