Mat and Vec_ types multiplication

Szał Pał picture Szał Pał · Jul 21, 2014 · Viewed 7.8k times · Source

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?

Answer

Яois picture Яois · Jul 21, 2014

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.