我正在使用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;
但是打印结果是零矩阵。我的代码出了什么问题?
答案 0 :(得分:3)
源中的所有点都具有相同的y
坐标,因此源三角形实际上不是三角形而是一条直线。
你正试图解决一个单一的问题。线的任何仿射变换都是一条线(你不能“膨胀”区域中的一条线)。