如何通过在图像中选择四个点来使图像变直?

ANU*_*NGH 5 java opencv image image-processing

我想通过使用Java中的opencv的getPerspectiveTransform()方法在图像中选择四个点来使图像直。我知道可以在python:getPerspectiveTransform中使用opencv来完成 。如果有人用它来实现图像拉直..请帮助。

在此处输入图片说明

小智 5

透视变换可用于实现四边形到四边形的转换。在OpenCV 中,主要有两种方法来实现 getPerspectiveTransformation() 和 warpPerspective() 方法。

这是实现图像矫正的示例代码:

首先得到源图像中的四个四边形点

Mat srcImage = Imgcodecs.imread("input.png");
Mat destImage = new Mat(500, 700, srcImage.type());
Mat src = new MatOfPoint2f(new Point(x1, y1), new Point(x2, y2), new Point(x3, y3), new Point(x4, y4));
Mat dst = new MatOfPoint2f(new Point(0, 0), new Point(destImage.width() - 1, 0), new Point(destImage.width() - 1, destImage.height() - 1), new Point(0, destImage.height() - 1));
Run Code Online (Sandbox Code Playgroud)

获取转换矩阵

Mat transform = Imgproc.getPerspectiveTransform(src, dst);
Imgproc.warpPerspective(srcImage, destImage, transform, destImage.size());
Run Code Online (Sandbox Code Playgroud)

你会得到变换拉直的图像。

我已经在这张图片上测试了这段代码。 输入.png

结果图像是 输出.png