1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00

fix type check bug of Algorithm

This commit is contained in:
ser1zw 2013-10-06 06:25:14 +09:00
parent d08851893a
commit 28393d6af2
2 changed files with 76 additions and 19 deletions

View file

@ -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<cv::Mat> value = ALGORITHM(self)->getMatVector(StringValueCStr(parameter));

View file

@ -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