我需要从图像中分类螺栓,螺母和垫圈,
但我不知道如何从图像中检测这些对象。
(这是图像的一部分)
我将图像中的每种颜色(使用的java.awt.Color)值复制到2D数组
但我不知道我该怎么做。
如果我想对它们进行分类,程序必须至少识别哪个部分不是背景。
java有这个库吗?
答案 0 :(得分:0)
你试过openCV吗? Here是面部检测的例子,你的问题有点类似。 可能会有所帮助
答案 1 :(得分:0)
在Java中实现它的方法是使用具有Java本机接口的OpenCV库。请参阅以下链接以了解如何一起使用OpenCV和Java:
http://opencv-java-tutorials.readthedocs.io/en/latest/
当然知道如何使用Java和OpenCV还不足以解决您的需求。因此,您还应该了解图像处理主题。看到这个激励人心的演讲:
https://pt.slideshare.net/luigidr/introduction-to-open-cv-28728435
请注意,您必须准备好学习很多东西,如图像分割,色彩空间,结构分析等。玩得开心!
答案 2 :(得分:0)
要查看图像中是否有对象,您需要确定该对象边缘的位置。如果你看图像,你会发现背景的颜色与每个物体边缘的颜色有很大的不同。
您可以像往常一样在颜色数据中读取您的程序,只要它注意到颜色已经变化了足够大的数量,程序就会突出显示这一点。这可以通过将sobel滤波器应用于颜色数据来完成。
执行此操作应突出显示对象的边缘。从这里,您可以尝试分析所包围区域的大小或这些边缘的特征,以确定突出显示的对象。
Here是一个关于应用sobel过滤器的问题的链接,该过滤器有一些很好的答案。
虽然像OpenCV这样的库确实有sobel过滤和图像检测,但是自己实现sobel过滤器并不需要太多代码。我相信这也是一个更简单的解决方案。安装和学习OpenCV可能比仅使用自己的sobel过滤器花费更多时间。