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

modified CvMat#or, and added some tests

This commit is contained in:
ser1zw 2011-01-03 13:54:27 +09:00
parent 9a3a49b917
commit 24804939a3
2 changed files with 89 additions and 1 deletions

View file

@ -1757,7 +1757,7 @@ rb_or(int argc, VALUE *argv, VALUE self)
{
VALUE val, mask, dest;
rb_scan_args(argc, argv, "11", &val, &mask);
dest = new_object(cvGetSize(CVARR(self)), cvGetElemType(CVARR(self)));
dest = copy(self);
if (rb_obj_is_kind_of(val, rb_klass))
cvOr(CVARR(self), CVARR(val), CVARR(dest), MASK(mask));
else

View file

@ -1122,6 +1122,94 @@ class TestCvMat < OpenCVTestCase
CvScalar.new(n, n, n, n)
end
}
# Alias
m3 = m1 & m2
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0) { |j, i, c|
n = c + 1
CvScalar.new(n & 1, n & 2, n & 3, n & 4)
}
m3 = m1 & s1
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0.001) { |j, i, c|
n = c + 1
CvScalar.new(n & 1, n & 2, n & 3, n & 4)
}
end
def test_or
m1 = create_cvmat(6, 4)
s1 = CvScalar.new(1, 2, 3, 4)
m2 = create_cvmat(6, 4) { s1 }
mask = create_cvmat(6, 4, :cv8u, 1) { |j, i, c|
s = (i < 3 and j < 2) ? 1 : 0
CvScalar.new(s)
}
# CvMat | CvMat
m3 = m1.or(m2)
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0) { |j, i, c|
n = c + 1
CvScalar.new(n | 1, n | 2, n | 3, n | 4)
}
# CvMat | CvMat with mask
m3 = m1.or(m2, mask)
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0) { |j, i, c|
n = c + 1
if i < 3 and j < 2
CvScalar.new(n | 1, n | 2, n | 3, n | 4)
else
CvScalar.new(n, n, n, n)
end
}
# CvMat | CvScalar
m3 = m1.or(s1)
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0.001) { |j, i, c|
n = c + 1
CvScalar.new(n | 1, n | 2, n | 3, n | 4)
}
# CvMat | CvScalar with mask
m3 = m1.or(s1, mask)
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0) { |j, i, c|
n = c + 1
if i < 3 and j < 2
CvScalar.new(n | 1, n | 2, n | 3, n | 4)
else
CvScalar.new(n, n, n, n)
end
}
# Alias
m3 = m1 | m2
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0) { |j, i, c|
n = c + 1
CvScalar.new(n | 1, n | 2, n | 3, n | 4)
}
m3 = m1 | s1
assert_equal(m1.height, m3.height)
assert_equal(m1.width, m3.width)
assert_each_cvscalar(m3, 0.001) { |j, i, c|
n = c + 1
CvScalar.new(n | 1, n | 2, n | 3, n | 4)
}
end
# def test_avg_sdv