2012-07-24 79 views
1

我目前正在研究一個將邊緣檢測應用到預覽框區域的程序。我已經使用了previewcallback並獲得了我的裁剪位圖,使用以下方法轉換爲灰度。Android getPixels

int height1=120; 
int width2=120; 

      final Bitmap resizedBitmap = Bitmap.createBitmap(bmp, 260, 15, 
        width2, height1); 
      try { 
       int bWidth = resizedBitmap.getWidth(); 
       int bHeight = resizedBitmap.getHeight(); 
       int[] pixels = new int[bWidth * bHeight]; 
       resizedBitmap.getPixels(pixels, 0, bWidth, 0, 0, bWidth, bHeight); 
       for (int y = 0; y < bHeight; y++){ 
        for (int x = 0; x < bWidth; x++){ 
         int index = y * bWidth + x; 
         int R = (pixels[index] >> 16) & 0xff;  //bitwise shifting 
         int G = (pixels[index] >> 8) & 0xff; 
         int B = pixels[index] & 0xff; 
         int gray = (int) (.299 * R + .587 * G + .114 * B); 
        } 
       } 

我很新的這一點,並想知道是否灰是120×120像素的二維數組,還是灰色的價值纔剛剛被覆蓋每個循環。

道歉,如果這是很基本的

回答

0

好吧,也許我失去了一些東西,但據我可以看到gray被覆蓋。你會需要像

int[][] gray = new int[width][height]; 
// start loop 

在循環:

gray[x][y] = ...; 
+0

感謝,我給一個去。我正在努力使用Android進行調試,因爲我無法打印出數組。 (之前在Matlab上工作過) – 2012-07-24 14:16:56

+0

Android的確需要一個與matlab不一樣的想法,我覺得你很痛苦。但是,要「打印」出數組和對象,請嘗試Log.d(「MyAppName」,myArray.toString());然後在logcat中查看打印的內容 – Eagle 2012-07-24 14:27:40

+0

如果使用eclipse,則還可以在運行時查看值,方法是在表達式視圖中放置一個斷點並添加想要的值,該值也可以是數組。因爲您可以更改值以進行調試,所以對我來說更方便。 – 2012-07-25 05:35:45

相關問題