3

我想dewarp使用pythonopencv/PIL等)的图像。我有 4 个点,我知道它们应该在平面上形成一个矩形。

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

我发现的所有函数都依赖于转换matrix,所以我想给我一些关于如何计算正确的指示就足够了matrix

问候并感谢您的帮助

4

2 回答 2

3

要计算此矩阵,请使用:

cv2.getPerspectiveTransform(src, dst)

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

于 2013-08-01T13:08:54.993 回答
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
于 2013-08-01T13:39:03.200 回答