比较2张图片以避免重复

时间:2013-08-21 21:39:48

标签: android imageview getpixel

我正在比较2个相似的图像,并希望看看两者是否相似。目前我使用的是代码:

public void foo(Bitmap bitmapFoo) {
    int[] pixels;

    int height = bitmapFoo.getHeight();
    int width = bitmapFoo.getWidth();

    pixels = new int[height * width];

    bitmapFoo.getPixels(pixels, 0, width, 1, 1, width - 1, height - 1); 


}

我调用函数:foo(img1)其中:

img1=(Bitmap)data.getExtras().get("data");

我想知道如何获得上面的getpixel,我尝试将其分配给变量但是没有用。它应该有返回类型吗?它的格式是?

还有我如何比较2张图片?

根据拍摄快照的移动相机,这两个图像的尺寸可能不同。

也可以识别是否在早晚拍摄相同的图像???

先谢谢。

2 个答案:

答案 0 :(得分:0)

如果要将位图的像素复制到字节数组,最简单的方法是:

int height = bitmapFoo.getHeight();
int width = bitmapFoo.getWidth();

pixels = new int[height * width];

bitmapFoo.copyPixelsToBuffer(pixels);

See the documentation

我应该警告你,你必须小心处理这个问题,否则你将得到OutOfMemoryError。

获取所有像素

bitmapFoo.copyPixelsToBuffer(pixels);

bitmapFoo.getPixels(pixels, 0, width, 0, 0, width, height);

获得一个像素

两个参数必须是[0,getWidth() - 1]和[0,getHeight() - 1]

范围内的两个整数
int pix = bitmapFoo.getPixel(x, y);

答案 1 :(得分:0)

此代码会将基本图像中的像素与其他图像进行比较。

  1. 如果位置(x,y)上的两个像素都相同,则在结果图像中添加相同的像素而不会发生变化。否则,它将修改该像素并添加到我们的结果图像中。

  2. 如果基线图像的高度或宽度大于其他图像,则它将为其他像素添加红色,这是其他图像中不可用的。

  3. 两种图像文件格式都应相同,以便进行比较。

  4. 代码将使用基本图像文件格式创建结果图像文件,并且结果图像包含观察到差异的突出显示部分。

这是一个Link To Code,并附带了示例示例。