diff --git a/ext/opencv/algorithm.cpp b/ext/opencv/algorithm.cpp index a406366..837a1da 100644 --- a/ext/opencv/algorithm.cpp +++ b/ext/opencv/algorithm.cpp @@ -27,7 +27,7 @@ rb_class() VALUE rb_set_int(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); try { ALGORITHM(self)->setInt(StringValueCStr(parameter), NUM2INT(value)); } @@ -41,7 +41,7 @@ rb_set_int(VALUE self, VALUE parameter, VALUE value) VALUE rb_set_double(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); try { ALGORITHM(self)->setDouble(StringValueCStr(parameter), NUM2DBL(value)); } @@ -55,7 +55,7 @@ rb_set_double(VALUE self, VALUE parameter, VALUE value) VALUE rb_set_bool(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); try { bool val = TRUE_OR_FALSE(value) ? true : false; ALGORITHM(self)->setBool(StringValueCStr(parameter), val); @@ -70,8 +70,8 @@ rb_set_bool(VALUE self, VALUE parameter, VALUE value) VALUE rb_set_string(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); - Check_Type(T_STRING, value); + Check_Type(parameter, T_STRING); + Check_Type(value, T_STRING); try { ALGORITHM(self)->setString(StringValueCStr(parameter), StringValueCStr(value)); } @@ -85,7 +85,7 @@ rb_set_string(VALUE self, VALUE parameter, VALUE value) VALUE rb_set_mat(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); try { CvMat* val = CVMAT_WITH_CHECK(value); cv::Mat mat(val); @@ -101,8 +101,8 @@ rb_set_mat(VALUE self, VALUE parameter, VALUE value) VALUE rb_set_matvector(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); - Check_Type(T_ARRAY, value); + Check_Type(parameter, T_STRING); + Check_Type(value, T_ARRAY); try { long len = RARRAY_LEN(value); VALUE* value_ptr = RARRAY_PTR(value); @@ -124,7 +124,7 @@ rb_set_matvector(VALUE self, VALUE parameter, VALUE value) VALUE rb_set_algorithm(VALUE self, VALUE parameter, VALUE value) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); try { ALGORITHM(self)->setAlgorithm(StringValueCStr(parameter), ALGORITHM(value)); } @@ -139,7 +139,7 @@ rb_set_algorithm(VALUE self, VALUE parameter, VALUE value) VALUE rb_get_int(VALUE self, VALUE parameter) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); int value = 0; try { value = ALGORITHM(self)->getInt(StringValueCStr(parameter)); @@ -154,7 +154,7 @@ rb_get_int(VALUE self, VALUE parameter) VALUE rb_get_double(VALUE self, VALUE parameter) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); double value = 0.0; try { value = ALGORITHM(self)->getDouble(StringValueCStr(parameter)); @@ -163,13 +163,13 @@ rb_get_double(VALUE self, VALUE parameter) raise_cverror(e); } - return NUM2DBL(value); + return DBL2NUM(value); } VALUE rb_get_bool(VALUE self, VALUE parameter) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); bool value = false; try { value = ALGORITHM(self)->getBool(StringValueCStr(parameter)); @@ -184,7 +184,7 @@ rb_get_bool(VALUE self, VALUE parameter) VALUE rb_get_string(VALUE self, VALUE parameter) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); std::string value = ""; try { value = ALGORITHM(self)->getString(StringValueCStr(parameter)); @@ -217,7 +217,7 @@ rb_get_mat(VALUE self, VALUE parameter) VALUE rb_get_matvector(VALUE self, VALUE parameter) { - Check_Type(T_STRING, parameter); + Check_Type(parameter, T_STRING); VALUE array = Qnil; try { std::vector value = ALGORITHM(self)->getMatVector(StringValueCStr(parameter)); diff --git a/test/test_lbph.rb b/test/test_lbph.rb index 4ff107b..64b818b 100755 --- a/test/test_lbph.rb +++ b/test/test_lbph.rb @@ -25,19 +25,15 @@ class TestLBPH < OpenCVTestCase assert_raise(TypeError) { LBPH.new(DUMMY_OBJ) } - assert_raise(TypeError) { LBPH.new(1, DUMMY_OBJ) } - assert_raise(TypeError) { LBPH.new(1, 2, DUMMY_OBJ) } - assert_raise(TypeError) { LBPH.new(1, 2, 3, DUMMY_OBJ) } - assert_raise(TypeError) { LBPH.new(1, 2, 3, 4, DUMMY_OBJ) } @@ -88,5 +84,66 @@ class TestLBPH < OpenCVTestCase def test_name assert_equal('FaceRecognizer.LBPH', @lbph.name) end + + def test_get_int + assert_equal(1, @lbph.get_int('radius')) + assert_equal(8, @lbph.get_int('neighbors')) + assert_equal(8, @lbph.get_int('grid_x')) + assert_equal(8, @lbph.get_int('grid_y')) + + assert_raise(TypeError) { + @lbph.get_int(DUMMY_OBJ) + } + end + + def test_get_double + assert_equal(Float::MAX, @lbph.get_double('threshold')) + + assert_raise(TypeError) { + @lbph.get_double(DUMMY_OBJ) + } + end + + def test_get_matvector + histgrams = @lbph_trained.get_matvector('histograms') + assert_equal(Array, histgrams.class) + assert_equal(2, histgrams.size) + assert_equal(CvMat, histgrams[0].class) + + assert_raise(TypeError) { + @lbph.get_matvector(DUMMY_OBJ) + } + end + + def test_set_int + @lbph.set_int('radius', 2) + @lbph.set_int('neighbors', 3) + @lbph.set_int('grid_x', 4) + @lbph.set_int('grid_y', 5) + + assert_equal(2, @lbph.get_int('radius')) + assert_equal(3, @lbph.get_int('neighbors')) + assert_equal(4, @lbph.get_int('grid_x')) + assert_equal(5, @lbph.get_int('grid_y')) + + assert_raise(TypeError) { + @lbph.set_int(DUMMY_OBJ, 1) + } + assert_raise(TypeError) { + @lbph.set_int('radius', DUMMY_OBJ) + } + end + + def test_set_double + @lbph.set_double('threshold', 1.0) + assert_in_delta(1.0, @lbph.get_double('threshold'), 0.001) + + assert_raise(TypeError) { + @lbph.set_double(DUMMY_OBJ, 1.0) + } + assert_raise(TypeError) { + @lbph.set_double('threshold', DUMMY_OBJ) + } + end end