繁体   English   中英

如何在Java中读取和提取图像像素并进行比较

[英]How to read and extract image pixels in java and compare

我想读取RGB图像并要提取图像像素。 然后,我想比较每个像素,以检查图像其他部分中是否有匹配的像素。 如果该像素与原始像素匹配,则在Java中应将匹配的像素替换为红色和黄色。

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

给出一些像素提取器和像素匹配器示例,以进一步进行操作。

以下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());
           }
        }
    }

此Marvin 算法完全可以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM