mirror of
https://github.com/ruby-opencv/ruby-opencv
synced 2023-03-27 23:22:12 -04:00
Commented out CvMat#>, CvMat#>=, CvMat#<, CvMat#<=, CvMat#==, CvMat#!=, and added some tests
I commented out the operators above because they are very confusing. They always return non-nil and non-false objects.
This commit is contained in:
parent
9ab9a4d915
commit
63f8cf8bb6
3 changed files with 110 additions and 7 deletions
|
@ -245,17 +245,17 @@ void define_ruby_class()
|
|||
rb_define_method(rb_klass, "not", RUBY_METHOD_FUNC(rb_not), 0);
|
||||
rb_define_method(rb_klass, "not!", RUBY_METHOD_FUNC(rb_not_bang), 0);
|
||||
rb_define_method(rb_klass, "eq", RUBY_METHOD_FUNC(rb_eq), 1);
|
||||
rb_define_alias(rb_klass, "==", "eq");
|
||||
// rb_define_alias(rb_klass, "==", "eq");
|
||||
rb_define_method(rb_klass, "gt", RUBY_METHOD_FUNC(rb_gt), 1);
|
||||
rb_define_alias(rb_klass, ">", "gt");
|
||||
// rb_define_alias(rb_klass, ">", "gt");
|
||||
rb_define_method(rb_klass, "ge", RUBY_METHOD_FUNC(rb_ge), 1);
|
||||
rb_define_alias(rb_klass, ">=", "ge");
|
||||
// rb_define_alias(rb_klass, ">=", "ge");
|
||||
rb_define_method(rb_klass, "lt", RUBY_METHOD_FUNC(rb_lt), 1);
|
||||
rb_define_alias(rb_klass, "<", "lt");
|
||||
// rb_define_alias(rb_klass, "<", "lt");
|
||||
rb_define_method(rb_klass, "le", RUBY_METHOD_FUNC(rb_le), 1);
|
||||
rb_define_alias(rb_klass, "<=", "le");
|
||||
// rb_define_alias(rb_klass, "<=", "le");
|
||||
rb_define_method(rb_klass, "ne", RUBY_METHOD_FUNC(rb_ne), 1);
|
||||
rb_define_alias(rb_klass, "!=", "ne");
|
||||
// rb_define_alias(rb_klass, "!=", "ne");
|
||||
rb_define_method(rb_klass, "in_range", RUBY_METHOD_FUNC(rb_in_range), 2);
|
||||
rb_define_method(rb_klass, "abs_diff", RUBY_METHOD_FUNC(rb_abs_diff), 1);
|
||||
rb_define_method(rb_klass, "count_non_zero", RUBY_METHOD_FUNC(rb_count_non_zero), 0);
|
||||
|
|
|
@ -6,6 +6,36 @@ require 'opencv'
|
|||
include OpenCV
|
||||
|
||||
class OpenCVTestCase < Test::Unit::TestCase
|
||||
CvMat.class_eval do
|
||||
# Range check for debug
|
||||
alias original_aref []
|
||||
alias original_aset []=;
|
||||
|
||||
def [](*idx)
|
||||
if idx.size == 1
|
||||
n = idx[0]
|
||||
throw ArgumentError.new("index #{n} is out of range") if n >= rows * cols
|
||||
else
|
||||
j, i = *idx
|
||||
throw ArgumentError.new("index for row #{j} is out of range") if j >= rows
|
||||
throw ArgumentError.new("index for column #{i} is out of range") if i >= cols
|
||||
end
|
||||
original_aref(*idx)
|
||||
end
|
||||
|
||||
def []=(*idx, val)
|
||||
if idx.size == 1
|
||||
n = idx[0]
|
||||
throw ArgumentError.new("index #{n} is out of range") if n >= rows * cols
|
||||
else
|
||||
j, i = *idx
|
||||
throw ArgumentError.new("index for row #{j} is out of range") if j >= rows
|
||||
throw ArgumentError.new("index for column #{i} is out of range") if i >= cols
|
||||
end
|
||||
original_aset(*idx, val)
|
||||
end
|
||||
end
|
||||
|
||||
def get_sample(filename, iscolor = nil)
|
||||
IplImage::load('samples/' + filename, iscolor)
|
||||
end
|
||||
|
|
|
@ -1324,7 +1324,80 @@ class TestCvMat < OpenCVTestCase
|
|||
CvScalar.new(n, 0, 0, 0)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
def test_gt
|
||||
m0 = create_cvmat(6, 4, :cv8u, 1) { |j, i, c|
|
||||
CvScalar.new(c, 0, 0, 0)
|
||||
}
|
||||
m1 = m0.gt(10)
|
||||
|
||||
assert_equal(m0.height, m1.height)
|
||||
assert_equal(m0.width, m1.width)
|
||||
assert_each_cvscalar(m) { |j, i, c|
|
||||
n = (c > 10) ? 0xff : 0
|
||||
CvScalar.new(n, 0, 0, 0)
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
def test_ge
|
||||
m0 = create_cvmat(6, 4, :cv8u, 1) { |j, i, c|
|
||||
CvScalar.new(c, 0, 0, 0)
|
||||
}
|
||||
m1 = m0.ge(10)
|
||||
|
||||
assert_equal(m0.height, m1.height)
|
||||
assert_equal(m0.width, m1.width)
|
||||
assert_each_cvscalar(m) { |j, i, c|
|
||||
n = (c >= 10) ? 0xff : 0
|
||||
CvScalar.new(n, 0, 0, 0)
|
||||
}
|
||||
end
|
||||
|
||||
def test_lt
|
||||
m0 = create_cvmat(6, 4, :cv8u, 1) { |j, i, c|
|
||||
CvScalar.new(c, 0, 0, 0)
|
||||
}
|
||||
m1 = m0.lt(10)
|
||||
|
||||
assert_equal(m0.height, m1.height)
|
||||
assert_equal(m0.width, m1.width)
|
||||
assert_each_cvscalar(m1) { |j, i, c|
|
||||
n = (c < 10) ? 0xff : 0
|
||||
CvScalar.new(n, 0, 0, 0)
|
||||
}
|
||||
end
|
||||
|
||||
def test_le
|
||||
m0 = create_cvmat(6, 4, :cv8u, 1) { |j, i, c|
|
||||
CvScalar.new(c, 0, 0, 0)
|
||||
}
|
||||
m1 = m0.le(10)
|
||||
|
||||
assert_equal(m0.height, m1.height)
|
||||
assert_equal(m0.width, m1.width)
|
||||
assert_each_cvscalar(m1) { |j, i, c|
|
||||
n = (c <= 10) ? 0xff : 0
|
||||
CvScalar.new(n, 0, 0, 0)
|
||||
}
|
||||
end
|
||||
|
||||
def test_ne
|
||||
m0 = create_cvmat(6, 4, :cv8u, 1) { |j, i, c|
|
||||
CvScalar.new(c, 0, 0, 0)
|
||||
}
|
||||
m1 = m0.ne(10)
|
||||
|
||||
assert_equal(m0.height, m1.height)
|
||||
assert_equal(m0.width, m1.width)
|
||||
assert_each_cvscalar(m1) { |j, i, c|
|
||||
n = (c != 10) ? 0xff : 0
|
||||
CvScalar.new(n, 0, 0, 0)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
||||
# def test_avg_sdv
|
||||
# m = CvMat.new(1, 8, CV_32F)
|
||||
# [2, 4, 4, 4, 5, 5, 7, 9].each_with_index { |v, i|
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue