假设我有一个转化矩阵Mat
tr
,我来自getAffineTransform()
和Point2d
p
。我想要的是p
与tr
变形的结果。 OpenCV是否提供了这样做的方法?
答案 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
并乘以矩阵。