我目前正致力于将边缘检测应用于预览帧区域的程序。我使用了previewcallback并得到了我的裁剪位图,使用以下方法转换为灰度。
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);
}
}
我对此非常陌生,想知道灰色是否是120x120像素的2D数组,或者是否只是为每个循环覆盖了灰色值。
如果这是非常基本的道歉
答案 0 :(得分:0)
好吧,也许我错过了什么,但据我所知,gray
被覆盖了。你需要像
int[][] gray = new int[width][height];
// start loop
在循环中:
gray[x][y] = ...;