2013-11-15 108 views
1

我使用的OpenCV做一些图像处理作业。我想用仿射方法来转换图像。这是我的代码:为什么getAffineTransform返回零矩阵

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; 

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

回答

3

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

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

相关问题