2013-08-21 32 views
0

我比较2张类似的图片,并想看看如果两个都差不多。目前我使用的代码:比较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张图片?

此外,这两个图像可能基于快照取自的移动照相机具有不同的尺寸。

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

在此先感谢。

+0

检查这个帖子,他们建议了一些选项:http://stackoverflow.com/questions/6120439/comparing-bitmap-i-and-android – Juangcg

+0

我该如何检索:bitmapFoo.getPixels(pixels,0,宽度,1,1,宽度-1,高度-1); –

回答

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); 
+0

但已经有getpixel函数:bitmapFoo.getPixels(pixels,0,width,1,1,width - 1,height - 1);如何得到这个? –

+0

bitmapFoo.getPixels(像素,0,宽度,0,0,宽度,高度); – Juangcg

+0

int pxl = bitmapFoo.getPixel(bitmapFoo.getHeight(),bitmapFoo.getWidth());是givig错误。为什么?感谢您的时间。 –