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

fixed a bug of CvMat#transpose

This commit is contained in:
ser1zw 2011-09-18 18:45:22 +09:00
parent 41bf713cd3
commit 468daf06e6
3 changed files with 8 additions and 36 deletions

View file

@ -259,8 +259,6 @@ void define_ruby_class()
rb_define_method(rb_klass, "trace", RUBY_METHOD_FUNC(rb_trace), 0);
rb_define_method(rb_klass, "transpose", RUBY_METHOD_FUNC(rb_transpose), 0);
rb_define_alias(rb_klass, "t", "transpose");
rb_define_method(rb_klass, "transpose!", RUBY_METHOD_FUNC(rb_transpose_bang), 0);
rb_define_alias(rb_klass, "t!", "transpose!");
rb_define_method(rb_klass, "det", RUBY_METHOD_FUNC(rb_det), 0);
rb_define_alias(rb_klass, "determinant", "det");
rb_define_method(rb_klass, "invert", RUBY_METHOD_FUNC(rb_invert), -1);
@ -2506,8 +2504,8 @@ rb_trace(VALUE self)
VALUE
rb_transpose(VALUE self)
{
CvArr* self_ptr = CVARR(self);
VALUE dest = new_mat_kind_object(cvGetSize(self_ptr), self);
CvMat* self_ptr = CVMAT(self);
VALUE dest = new_mat_kind_object(cvSize(self_ptr->rows, self_ptr->cols), self);
try {
cvTranspose(self_ptr, CVARR(dest));
}
@ -2517,27 +2515,6 @@ rb_transpose(VALUE self)
return dest;
}
/*
* call-seq:
* transpose! -> self
*
* Transposed matrix.
*
* <b>rectangular matrix only (CvMat#square? = true).</b>
*/
VALUE
rb_transpose_bang(VALUE self)
{
CvArr* self_ptr = CVARR(self);
try {
cvTranspose(self_ptr, self_ptr);
}
catch (cv::Exception& e) {
raise_cverror(e);
}
return self;
}
/*
* call-seq:
* det -> float

View file

@ -124,7 +124,6 @@ VALUE rb_perspective_transform(VALUE self, VALUE mat);
VALUE rb_mul_transposed(int argc, VALUE *argv, VALUE self);
VALUE rb_trace(VALUE self);
VALUE rb_transpose(VALUE self);
VALUE rb_transpose_bang(VALUE self);
VALUE rb_det(VALUE self);
VALUE rb_invert(int argc, VALUE *argv, VALUE self);
VALUE rb_solve(int argc, VALUE *argv, VALUE self);

View file

@ -2043,19 +2043,15 @@ class TestCvMat < OpenCVTestCase
end
def test_transpose
m0 = create_cvmat(5, 5, :cv32f, 4) { |j, i, c|
m0 = create_cvmat(2, 3, :cv32f, 4) { |j, i, c|
CvScalar.new(c * 0.5, c * 1.0, c * 1.5, c * 2.0)
}
m1 = m0.clone
m2 = m1.transpose
m1.transpose!
m3 = m0.t
m4 = m0.clone
m4.t!
m1 = m0.transpose
m2 = m0.t
[m1, m2, m3, m4].each { |m|
assert_equal(m0.width, m.width)
assert_equal(m0.height, m.height)
[m1, m2].each { |m|
assert_equal(m0.rows, m.cols)
assert_equal(m0.cols, m.rows)
assert_each_cvscalar(m, 0.001) { |j, i, c|
m0[i, j]
}