2017-06-11 43 views
-1

我想编写一个java程序,以便当我捕捉到魔方的任何一个面的图像时,它会告诉哪个面上出现了哪种颜色。我不想使用任何预先编写的库/ api。我想自己写代码。我想问我应该怎么做....我的意思是步骤。 在此先感谢!如何处理图像中的信息?

回答

1

您可以在时间

 img = ImageIO.read(new File("/mydir/pic.png")); 
    for (int y = 0; y < img.getHeight(); y++) { 
     for (int x = 0; x < img.getWidth(); x++) { 
      int rgb = img.getRGB(x, y); 
      if (rgb == Color.RED.getRGB()) { 
       //Do stuff 

      } else if (rgb == Color.GREEN.getRGB()){ 
       //Do more stuff 
      } 

     } 
    } 
0

做这样的事情是分析一个像素。如果图像中的立方体的脸的大小是可变的,那么它不是一件容易的事。否则,你可以使用@ urag的代码,而不是检查所有的像素,只需检查一行中的6个像素,从第一个瓦片的第一个中心开始,以瓦片宽度的偏移量进行检查。

+0

所有立方体上的绿颜色不会相同。如何处理这种情况?此外,程序可能会拾取不在立方体上的颜色(与立方体一起出现在图像中的其他对象)如何继续? – thapro

+0

用于检查绿色,而不是检查确切的绿色,您可以查找与所有类型的绿色相关的rgb值的范围。对于第二个问题,请尝试捕获立方体的图像,否则我认为您需要计算机视觉和机器学习方面的知识才能从图像中找到您的立方体。 – WSS