假设我有一个转换矩阵 Mat
tr
我来自 getAffineTransform()
和a Point2d
p
。我想要的是翘曲的结果 p
同 tr
。 OpenCV是否提供了这样做的方法?
假设我有一个转换矩阵 Mat
tr
我来自 getAffineTransform()
和a Point2d
p
。我想要的是翘曲的结果 p
同 tr
。 OpenCV是否提供了这样做的方法?
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));
或者你可能只是转换 Point2f
变成一个 Mat
并乘以矩阵。
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));
或者你可能只是转换 Point2f
变成一个 Mat
并乘以矩阵。