2013-03-25 33 views
1

我想读取RGB图像并想要提取图像像素。然后,我想比较每个像素,以检查图像其他部分中的任何匹配像素。如果该像素匹配原始像素,并且匹配的像素应该用java中的红色和黄色代替。如何在java中读取和提取图像像素并进行比较

我从javaforums和图像处理网站搜索了很多。仍然没有完美的解决方案。

给出一些像素提取器和像素匹配器的例子来进一步进行。

+1

这可能是有用的http://stackoverflow.com/questions/7292208/image-comparison-in-java – AJM 2013-03-25 10:38:43

回答

2

以下getRGBA方法将在位置图像IMG的(X,Y)提取RGBA数组:

private final int ALPHA = 24; 
private final int RED = 16; 
private final int GREEN = 8; 
private final int BLUE = 0; 

public int[] getRGBA(BufferedImage img, int x, int y) 
{ 
    int[] color = new int[4]; 
    color[0]=getColor(img, x,y,RED); 
    color[1]=getColor(img, x,y,GREEN); 
    color[2]=getColor(img, x,y,BLUE); 
    color[3]=getColor(img, x,y,ALPHA); 
    return color; 
} 

public int getColor(int x, int y, int color) 
{  
    int value=img.getRGBA(x, y) >> color & 0xff; 
    return value; 
} 

像素匹配?也许你只是想运行一个循环..考虑你正在服用的(0,0)像素作为原始像素,可以做到以下几点:

int[] originalPixel = getRGBA(img,0,0); 
    for (int i=0;i<img.getWidth();i++) 
    { 
     for (int j=0;j<img.getHeight();j++) 
     { 
      int[] color1 = getRGBA(img,i,j); 
      if (originalPixel[0] == color1[0] && originalPixel[1] == color1[1] && originalPixel[2] == color1[2] && originalPixel[3] == color1[3]) { 
       img.setRGB(i, j,Color.red.getRGB()); 
      } 
      else { 
       img.setRGB(i, j,Color.yellow.getRGB()); 
      } 
     } 
    } 
+0

我会检查:) – Ameer 2013-03-25 10:50:08

0

这张建东algorithm不正是你想要的。

相关问题