2013-08-21 34 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錯誤。爲什麼?感謝您的時間。 –