opencv java - 检测所有矩形并用图像

时间:2018-02-08 08:53:39

标签: java opencv image-processing

我目前正致力于自动图像编辑的解决方案。

我使用了Canny Edge Detection和Closing。

但我最终想要完成的是从蓝图中找到所有矩形并用图像填充它们。

我想知道我需要采取的流程,而不是确切的代码或解决方案!

请告诉我应该采取哪些措施来完成它,thx。

Image that has the rectangles

Image that needs to go into all the rectangles

what i have done so far

2018-02-12 EDITTED(clean rectangle detected)

//我已经找到了矩形并在它们上面画线,但结果并不像我预期的那样可靠(它在不是停车位的矩形上绘制线条),我不知道如何放置这些矩形上的图像而不是它们上的绘制线。请帮帮我!

P.S:只有在JAVA中!

1 个答案:

答案 0 :(得分:0)

在你的情况下,你不需要Canny。您的图像非常干净,边缘已经非常明显。一个简单的阈值,将更好地工作。

对于矩形检测,请查看使用findcontours并检查角度的此示例(包含在opencv中):https://github.com/opencv/opencv/blob/master/samples/cpp/squares.cpp

在您的情况下,您可以跳过Canny步骤,因为您没有渐变。您可能需要修改过滤,例如您的案例的侧面维度。

矩形看起来很好,您只需要在该位置复制图像。如果旋转矩形,则还必须旋转图像。

编辑: 要将小图像复制到大图像上,您可以执行以下操作

Mat submatImg = bigImage.submat(new Rect(x, y, smallImage.width(), smallImage.height());
smallImage.copyTo(submatImg);

如果您需要进行调整大小和旋转,请查看geometric transformations