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:
parent
41bf713cd3
commit
468daf06e6
3 changed files with 8 additions and 36 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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]
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue