如何将转换矩阵应用于OpenCV中的某个点?

时间:2014-10-29 22:46:48

标签: c++ opencv

假设我有一个转化矩阵Mat tr,我来自getAffineTransform()Point2d p。我想要的是ptr变形的结果。 OpenCV是否提供了这样做的方法?

1 个答案:

答案 0 :(得分:15)

cv::transform用于使用变换矩阵转换点。

  

N -channel数组src的每个元素被解释为N元素向量,使用M x N或M x(N + 1)矩阵m转换为M元素向量 - 输出数组的对应元素dst。

  该函数可用于N维点的几何变换,任意线性颜色空间变换(如各种RGB到YUV变换),对图像通道进行混洗等。

InputArray documentation中有一个简洁的例子(否则不相关):

std::vector<Point2f> vec;
// points or a circle
for( int i = 0; i < 30; i++ )
    vec.push_back(Point2f((float)(100 + 30*cos(i*CV_PI*2/5)),
                          (float)(100 - 30*sin(i*CV_PI*2/5))));
cv::transform(vec, vec, cv::Matx23f(0.707, -0.707, 10, 0.707, 0.707, 20));

或者您可以将Point2f转换为Mat并乘以矩阵。