在平面上用4个点对图片进行不失真/扭曲

时间:2013-08-01 12:56:30

标签: python opencv distortion

我想使用dewarppython等)opencv/PIL图片。我有4点我知道他们应该在飞机上形成一个矩形。

在gimp中,我可以使用dewarp手动backwards-correction图片,但我想编写一个不依赖gimp的程序。

我发现的所有函数都依赖于转换matrix,所以我想我可以就如何计算正确的matrix提供一些指示。

Greets&谢谢你的帮助

2 个答案:

答案 0 :(得分:3)

要计算此矩阵,请使用:

cv2.getPerspectiveTransform(src, dst)

src包含4个点的列表,dst包含新图像角的列表。小心,它们必须按照正确的顺序

答案 1 :(得分:1)

我不使用python,但这里是你在c ++中的答案它应该是相同的:

transformationMatrix= cv::getPerspectiveTransform(source , dst_pnt);  // getting the transformation matrix 

cv::warpPerspective(src, quad, transformationMatrix,perspectiveSize,1); // warping


.........................
unwarping 

cv::Matx33f unwarp = transformMatrix;
    cv::Point3f homogeneous = unwarp.inv() *pTmp; // pTmp is a point in your transformaed frame 

cv::Mat unwarpFrame =  unwarp.inv() * srcFrame;   // in case of a frame 
enter code here