Mat and Vec_ types multiplication
Asked Answered
S

1

6

Is there any easy way to multiplicate Mat and Vec_? (Provided, that they have proper sizes, e.g.:

Mat_<double> M = Mat(3,3,CV_32F);
Vec3f V=(1,2,3);
result = M*V //?

Maybe there is some easy method of creating row (or col) Mat based on Vec3?

Silures answered 21/7, 2014 at 11:28 Comment(0)
D
7

You can't just multiply Mat and Vec (or, more generally, Matx_) elements. Cast the Vec object to Mat:

Mat_<float> M = Mat::eye(3,3,CV_32F);
Vec3f V=(1,2,3);
Mat result = M*Mat(V);

Also, I noticed an error in your code: when constructing M, the type CV_32F corresponds to float elements, not double. This is also corrected in my code example.

Hope that it helps.

Decorous answered 21/7, 2014 at 12:45 Comment(1)
Minor detail, but this isn't a "cast". It is actually invoking the Mat constructor that accepts a single Vec as an argument. docs.opencv.org/3.4.6/d3/d63/…Close

© 2022 - 2024 — McMap. All rights reserved.