Java识别图像中的特定对象

Java识别图像中的特定对象,java,image,image-processing,image-recognition,Java,Image,Image Processing,Image Recognition,我需要从图像中对螺栓、螺母和垫圈进行分类 但我不知道如何从图像中检测这些物体 (这是图像的一部分) 我将每个颜色(使用java.awt.color)值从图像复制到2D数组 但我不知道我该怎么办 若我想对它们进行分类,程序必须至少识别出哪部分不是背景 java有用于此的库吗?您尝试过openCV吗。 人脸检测的例子和你的问题有点相似。 可能会有所帮助在Java中实现这一点的方法是使用具有Java本机接口的OpenCV库。请参考下面的链接,以了解如何将OpenCV和Java结合使用: 当然,知道

我需要从图像中对螺栓、螺母和垫圈进行分类

但我不知道如何从图像中检测这些物体

(这是图像的一部分)

我将每个颜色(使用java.awt.color)值从图像复制到2D数组

但我不知道我该怎么办

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

java有用于此的库吗?

您尝试过openCV吗。 人脸检测的例子和你的问题有点相似。
可能会有所帮助

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

当然,知道如何使用Java和OpenCV还不足以解决您的需求。因此,您还应该学习有关图像处理的主题。请参阅此激励性演示:


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

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

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

执行此操作应高亮显示对象的边。从这里,您可以尝试分析封闭区域的大小或这些边的特征,以确定高亮显示的对象

是一个关于应用sobel过滤器的问题的链接,该过滤器有一些好的答案


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

如果你想对图像进行分类,可以研究神经网络。然而,它确实需要称为训练集的数据来训练它。