1

我正在使用 OpenCV 做一些图像处理工作。我想用仿射方法转换图像。这是我的代码:

Point2f srcTri[3];
Point2f dstTri[3];

srcTri[0] = Point2f( 0.0, 1.0 );
srcTri[1] = Point2f( 50.0, 1.0);
srcTri[2] = Point2f( 10.0, 1.0);

dstTri[0] = Point2f( 1.0, 1.0);
dstTri[1] = Point2f( 5.0, 50.0 );
dstTri[2] = Point2f( 110.0, 200.0 );

Mat warpMat = getAffineTransform( srcTri, dstTri );
cout << warpMat << endl;

但是打印结果是一个零矩阵。我的代码有什么问题?

4

1 回答 1

3

源中的所有点都具有相同的y坐标,因此源三角形不是真正的三角形而是一条线。

您正在尝试解决一个单一的问题。一条线的任何仿射变换都是一条线(您不能在一个区域中“膨胀”一条线)。

于 2013-11-15T07:34:31.503 回答