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

lei*_*paC 12 c++ opencv

假设我有一个转换矩阵Mat tr,我得到了getAffineTransform()一个Point2d p.我想这是扭曲的结果一点ptr.OpenCV是否提供了这样做的方法?

cha*_*pjc 16

cv::transform 用于转换具有变换矩阵的点.

N通道阵列src的每个元素被解释为N元素向量,其使用M×N或M×(N + 1)矩阵m变换为M元素向量 - 输出阵列dst的对应元素.

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

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

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));
Run Code Online (Sandbox Code Playgroud)

或者您可以将其转换Point2f为a Mat并乘以矩阵.