我想dewarp
使用python
(opencv/PIL
等)的图像。我有 4 个点,我知道它们应该在平面上形成一个矩形。
在 gimp 中,我可以手动dewarp
使用图片backwards-correction
,但我想编写一个不依赖于gimp
.
我发现的所有函数都依赖于转换matrix
,所以我想给我一些关于如何计算正确的指示就足够了matrix
。
问候并感谢您的帮助
我想dewarp
使用python
(opencv/PIL
等)的图像。我有 4 个点,我知道它们应该在平面上形成一个矩形。
在 gimp 中,我可以手动dewarp
使用图片backwards-correction
,但我想编写一个不依赖于gimp
.
我发现的所有函数都依赖于转换matrix
,所以我想给我一些关于如何计算正确的指示就足够了matrix
。
问候并感谢您的帮助
要计算此矩阵,请使用:
cv2.getPerspectiveTransform(src, dst)
使用 src 包含 4 个点的列表和 dst 包含新图像角的列表。小心,它们的顺序必须正确
我不使用 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