Java 识别图像中的特定对象

Java Recognize specific objects in image

我需要根据图像对螺栓、螺母和垫圈进行分类,

但我不知道如何从图像中检测到这些对象。

(这是图片的一部分)

我将图像中的每个颜色(使用 java.awt.Color)值复制到二维数组,

但我不知道我要用它做什么。

如果我想对它们进行分类,程序必须至少识别出哪一部分不是背景。

java 有这方面的库吗?

你试过openCV了吗。 Here是人脸检测的例子,你的问题有点类似。 可能会有帮助

在 Java 中实现的方法是使用具有 Java 本机接口的 OpenCV 库。请参考下面的 link 以了解如何将 OpenCV 和 Java 一起使用:

http://opencv-java-tutorials.readthedocs.io/en/latest/

当然知道如何使用Java和OpenCV还不足以解决你的需求。因此,您还应该了解图像处理主题。看看这个激励人心的演讲:

https://pt.slideshare.net/luigidr/introduction-to-open-cv-28728435

请注意,您必须准备好学习很多东西,例如图像分割、色彩空间、结构分析等。玩得开心!

要查看图像中是否有物体,您需要确定该物体的边缘位置。如果您查看图像,您会注意到背景颜色与每个对象边缘的颜色相比有很大差异。

您可以让您的程序读取颜色数据,正如您所做的那样,只要它注意到颜色发生了足够大的变化,程序就会突出显示这一点。这将通过对颜色数据应用索贝尔过滤器来完成。

这样做应该会突出显示对象的边缘。从这里,您可以尝试分析封闭区域的大小或这些边缘的特征以确定突出显示的对象。

Here 是 link 一个关于应用 sobel 过滤器的问题,有一些很好的答案。

虽然 OpenCV 等库确实具有 sobel 过滤和图像检测功能,但您自己实现 sobel 过滤器并不需要太多代码。我相信这也是一个更简单的解决方案。安装和学习 OpenCV 可能比仅应用您自己的 sobel 过滤器花费更多时间。