Opencv 选定区域的仿射变换
我想在图像的选定部分创建一个仿射变换工具(4角多边形,请参见图像链接)。 我尝试使用opencv,但没有成功 谢谢你的帮助。Opencv 选定区域的仿射变换,opencv,image-processing,affinetransform,Opencv,Image Processing,Affinetransform,我想在图像的选定部分创建一个仿射变换工具(4角多边形,请参见图像链接)。 我尝试使用opencv,但没有成功 谢谢你的帮助。 问候你应该向我们展示你的尝试,以及你是如何失败的。 创建转换矩阵时可能使用了错误的点。 正确的程序如下所述 您应该使用getAffineTransform创建仿射变换矩阵。这将输入三角形映射到输出三角形,如中所述。但是你应该确保你通过了两个平面的三个对应点 如果不确定如何选择两个平面的三个对应点,只需使用getPerspectiveTransform并按各自的顺序传入两
问候你应该向我们展示你的尝试,以及你是如何失败的。 创建转换矩阵时可能使用了错误的点。 正确的程序如下所述 您应该使用
getAffineTransform
创建仿射变换矩阵。这将输入三角形映射到输出三角形,如中所述。但是你应该确保你通过了两个平面的三个对应点
如果不确定如何选择两个平面的三个对应点,只需使用getPerspectiveTransform
并按各自的顺序传入两个平面的四个点。它仍然有效,因为仿射变换只是透视变换的一个特例
获取变换矩阵后,应使用warpAffine
或warpaperspective
进行映射
输入图像。谢谢大家的帮助。我找到了解决办法 我使用了Qt功能。这是我的密码:
QImage img;
img.load("D:\\sample.png");
QPolygonF polygonIn;
polygonIn << QPointF(29, 25)
<< QPointF(147, 9)
<< QPointF(210, 100)
<< QPointF(0, 84);
QPolygonF polygonOut;
polygonOut << QPointF(29, 25)
<< QPointF(147, 25)
<< QPointF(210, 132)
<< QPointF(0, 84);
QTransform transform;
auto isOk = QTransform::quadToQuad(polygonIn, polygonOut, transform);
if(!isOk)
throw std::runtime_error("Transformation impossible with such parameters.");
img = img.transformed(transform.toAffine(), Qt::TransformationMode::SmoothTransformation);
QImage-img;
img.load(“D:\\sample.png”);
多聚素;
远志素