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:
parent
d08851893a
commit
28393d6af2
2 changed files with 76 additions and 19 deletions
|
@ -27,7 +27,7 @@ rb_class()
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_int(VALUE self, VALUE parameter, VALUE value)
|
rb_set_int(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
try {
|
try {
|
||||||
ALGORITHM(self)->setInt(StringValueCStr(parameter), NUM2INT(value));
|
ALGORITHM(self)->setInt(StringValueCStr(parameter), NUM2INT(value));
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ rb_set_int(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_double(VALUE self, VALUE parameter, VALUE value)
|
rb_set_double(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
try {
|
try {
|
||||||
ALGORITHM(self)->setDouble(StringValueCStr(parameter), NUM2DBL(value));
|
ALGORITHM(self)->setDouble(StringValueCStr(parameter), NUM2DBL(value));
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ rb_set_double(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_bool(VALUE self, VALUE parameter, VALUE value)
|
rb_set_bool(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
try {
|
try {
|
||||||
bool val = TRUE_OR_FALSE(value) ? true : false;
|
bool val = TRUE_OR_FALSE(value) ? true : false;
|
||||||
ALGORITHM(self)->setBool(StringValueCStr(parameter), val);
|
ALGORITHM(self)->setBool(StringValueCStr(parameter), val);
|
||||||
|
@ -70,8 +70,8 @@ rb_set_bool(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_string(VALUE self, VALUE parameter, VALUE value)
|
rb_set_string(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
Check_Type(T_STRING, value);
|
Check_Type(value, T_STRING);
|
||||||
try {
|
try {
|
||||||
ALGORITHM(self)->setString(StringValueCStr(parameter), StringValueCStr(value));
|
ALGORITHM(self)->setString(StringValueCStr(parameter), StringValueCStr(value));
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ rb_set_string(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_mat(VALUE self, VALUE parameter, VALUE value)
|
rb_set_mat(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
try {
|
try {
|
||||||
CvMat* val = CVMAT_WITH_CHECK(value);
|
CvMat* val = CVMAT_WITH_CHECK(value);
|
||||||
cv::Mat mat(val);
|
cv::Mat mat(val);
|
||||||
|
@ -101,8 +101,8 @@ rb_set_mat(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_matvector(VALUE self, VALUE parameter, VALUE value)
|
rb_set_matvector(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
Check_Type(T_ARRAY, value);
|
Check_Type(value, T_ARRAY);
|
||||||
try {
|
try {
|
||||||
long len = RARRAY_LEN(value);
|
long len = RARRAY_LEN(value);
|
||||||
VALUE* value_ptr = RARRAY_PTR(value);
|
VALUE* value_ptr = RARRAY_PTR(value);
|
||||||
|
@ -124,7 +124,7 @@ rb_set_matvector(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_set_algorithm(VALUE self, VALUE parameter, VALUE value)
|
rb_set_algorithm(VALUE self, VALUE parameter, VALUE value)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
try {
|
try {
|
||||||
ALGORITHM(self)->setAlgorithm(StringValueCStr(parameter), ALGORITHM(value));
|
ALGORITHM(self)->setAlgorithm(StringValueCStr(parameter), ALGORITHM(value));
|
||||||
}
|
}
|
||||||
|
@ -139,7 +139,7 @@ rb_set_algorithm(VALUE self, VALUE parameter, VALUE value)
|
||||||
VALUE
|
VALUE
|
||||||
rb_get_int(VALUE self, VALUE parameter)
|
rb_get_int(VALUE self, VALUE parameter)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
int value = 0;
|
int value = 0;
|
||||||
try {
|
try {
|
||||||
value = ALGORITHM(self)->getInt(StringValueCStr(parameter));
|
value = ALGORITHM(self)->getInt(StringValueCStr(parameter));
|
||||||
|
@ -154,7 +154,7 @@ rb_get_int(VALUE self, VALUE parameter)
|
||||||
VALUE
|
VALUE
|
||||||
rb_get_double(VALUE self, VALUE parameter)
|
rb_get_double(VALUE self, VALUE parameter)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
double value = 0.0;
|
double value = 0.0;
|
||||||
try {
|
try {
|
||||||
value = ALGORITHM(self)->getDouble(StringValueCStr(parameter));
|
value = ALGORITHM(self)->getDouble(StringValueCStr(parameter));
|
||||||
|
@ -163,13 +163,13 @@ rb_get_double(VALUE self, VALUE parameter)
|
||||||
raise_cverror(e);
|
raise_cverror(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NUM2DBL(value);
|
return DBL2NUM(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
rb_get_bool(VALUE self, VALUE parameter)
|
rb_get_bool(VALUE self, VALUE parameter)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
bool value = false;
|
bool value = false;
|
||||||
try {
|
try {
|
||||||
value = ALGORITHM(self)->getBool(StringValueCStr(parameter));
|
value = ALGORITHM(self)->getBool(StringValueCStr(parameter));
|
||||||
|
@ -184,7 +184,7 @@ rb_get_bool(VALUE self, VALUE parameter)
|
||||||
VALUE
|
VALUE
|
||||||
rb_get_string(VALUE self, VALUE parameter)
|
rb_get_string(VALUE self, VALUE parameter)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
std::string value = "";
|
std::string value = "";
|
||||||
try {
|
try {
|
||||||
value = ALGORITHM(self)->getString(StringValueCStr(parameter));
|
value = ALGORITHM(self)->getString(StringValueCStr(parameter));
|
||||||
|
@ -217,7 +217,7 @@ rb_get_mat(VALUE self, VALUE parameter)
|
||||||
VALUE
|
VALUE
|
||||||
rb_get_matvector(VALUE self, VALUE parameter)
|
rb_get_matvector(VALUE self, VALUE parameter)
|
||||||
{
|
{
|
||||||
Check_Type(T_STRING, parameter);
|
Check_Type(parameter, T_STRING);
|
||||||
VALUE array = Qnil;
|
VALUE array = Qnil;
|
||||||
try {
|
try {
|
||||||
std::vector<cv::Mat> value = ALGORITHM(self)->getMatVector(StringValueCStr(parameter));
|
std::vector<cv::Mat> value = ALGORITHM(self)->getMatVector(StringValueCStr(parameter));
|
||||||
|
|
|
@ -25,19 +25,15 @@ class TestLBPH < OpenCVTestCase
|
||||||
assert_raise(TypeError) {
|
assert_raise(TypeError) {
|
||||||
LBPH.new(DUMMY_OBJ)
|
LBPH.new(DUMMY_OBJ)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_raise(TypeError) {
|
assert_raise(TypeError) {
|
||||||
LBPH.new(1, DUMMY_OBJ)
|
LBPH.new(1, DUMMY_OBJ)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_raise(TypeError) {
|
assert_raise(TypeError) {
|
||||||
LBPH.new(1, 2, DUMMY_OBJ)
|
LBPH.new(1, 2, DUMMY_OBJ)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_raise(TypeError) {
|
assert_raise(TypeError) {
|
||||||
LBPH.new(1, 2, 3, DUMMY_OBJ)
|
LBPH.new(1, 2, 3, DUMMY_OBJ)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_raise(TypeError) {
|
assert_raise(TypeError) {
|
||||||
LBPH.new(1, 2, 3, 4, DUMMY_OBJ)
|
LBPH.new(1, 2, 3, 4, DUMMY_OBJ)
|
||||||
}
|
}
|
||||||
|
@ -88,5 +84,66 @@ class TestLBPH < OpenCVTestCase
|
||||||
def test_name
|
def test_name
|
||||||
assert_equal('FaceRecognizer.LBPH', @lbph.name)
|
assert_equal('FaceRecognizer.LBPH', @lbph.name)
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue