2013-08-01 49 views
2

我想要dewarp使用pythonopencv/PIL等)的图像。我有4点,我知道他们应该在飞机上形成一个矩形。在飞机上使用4个点不扭曲/去扭曲图片

在瘸子我可以手动dewarp图片使用backwards-correction,但我想编写一个程序,这不依赖于gimp

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

电贺&感谢您的帮助

回答

3

要计算此矩阵,使用方法:

cv2.getPerspectiveTransform(src, dst) 

与Src包含你4点列表和DST包含新图像的角落列表。要小心,他们必须在正确的顺序

+0

谢谢!不知道为什么我没有在文档中找到那个... – user2459109

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 
+0

也谢谢!实际上帮助我找到了正确的翘曲功能。 – user2459109