Java 2D在图像上绘制和编辑对象,并从图像中检测形状

Java 2D在图像上绘制和编辑对象,并从图像中检测形状,java,image,drawing,Java,Image,Drawing,谁能让我从以下想法开始: 我想将一个图像加载到我的java(JavaSwing)应用程序(平面图或蓝图)中。 假设楼层平面图像有一个白色背景,上面有3个形状(矩形、三角形和圆形)。这些形状有一个黑色的边框 程序应该检测这些形状并在上面绘制3个形状 例如:它检测矩形,并将从图像中在该矩形的顶部绘制一个新矩形。 当这个额外的矩形被绘制出来时,用户应该能够修改这个矩形并用它做额外的事情,比如填充这个矩形,改变边框样式 例如:在这种情况下,角上的小点或正方形应该可见,以便我们可以拖动/调整/移动矩形。有

谁能让我从以下想法开始:

我想将一个图像加载到我的java(JavaSwing)应用程序(平面图或蓝图)中。 假设楼层平面图像有一个白色背景,上面有3个形状(矩形、三角形和圆形)。这些形状有一个黑色的边框

程序应该检测这些形状并在上面绘制3个形状

例如:它检测矩形,并将从图像中在该矩形的顶部绘制一个新矩形。 当这个额外的矩形被绘制出来时,用户应该能够修改这个矩形并用它做额外的事情,比如填充这个矩形,改变边框样式

例如:在这种情况下,角上的小点或正方形应该可见,以便我们可以拖动/调整/移动矩形。有点像visual studio中的屏幕截图:

有人有这方面的教程吗?我是否缺少一些非常有用的java算法?等欢迎所有建议或帮助


Tnx预先

好的,一种暴力方法是遍历图像中的像素,查看缓冲图像的api,并通过特定颜色的连续像素检测形状。我相信有一种更有效的方法可以做到这一点。

正确检测扫描图片中的形状,这些形状可能会遇到各种问题(颜色、dpi、旋转、剪切)。即使是未扫描的图片也可能非常困难。您可能想研究在中使用。

我也考虑过这一点,但这只适用于水平线/垂直线。那么椭圆呢?你需要找到一些近似球体或圆形的启发式方法,并在扫描像素时寻找。我仍然认为有更好的方法来实现这一点,但现在想不出任何事情。有几篇像这样的论文讨论了这些问题。这看起来有点复杂(对于像我这样的初学者来说)布罗施伯,但不管怎么说,它是thnx。你找到更好的方法了吗?我发现了一些关于canny边缘检测的东西,但我不知道这是否容易实现。这就是计算机视觉。有很多已发布的例程(不一定在Java中)用于检测线条和其他形状。