Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 选定区域的仿射变换_Opencv_Image Processing_Affinetransform - Fatal编程技术网

Opencv 选定区域的仿射变换

Opencv 选定区域的仿射变换,opencv,image-processing,affinetransform,Opencv,Image Processing,Affinetransform,我想在图像的选定部分创建一个仿射变换工具(4角多边形,请参见图像链接)。 我尝试使用opencv,但没有成功 谢谢你的帮助。 问候你应该向我们展示你的尝试,以及你是如何失败的。 创建转换矩阵时可能使用了错误的点。 正确的程序如下所述 您应该使用getAffineTransform创建仿射变换矩阵。这将输入三角形映射到输出三角形,如中所述。但是你应该确保你通过了两个平面的三个对应点 如果不确定如何选择两个平面的三个对应点,只需使用getPerspectiveTransform并按各自的顺序传入两

我想在图像的选定部分创建一个仿射变换工具(4角多边形,请参见图像链接)。

我尝试使用opencv,但没有成功

谢谢你的帮助。
问候

你应该向我们展示你的尝试,以及你是如何失败的。 创建转换矩阵时可能使用了错误的点。 正确的程序如下所述

您应该使用
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”);
多聚素;
远志素