개발중인 이미지 처리 응용 프로그램에 문제가 있습니다 (여기서는 초보자 용). getPixel()
메서드를 사용하여 특정 픽셀의 값을 추출하려고합니다.getPixel() 메서드를 사용하여 거대한 음수 값을 추출했습니다.
그래도 문제가 있습니다. 이 메서드에서 얻은 숫자는 -1298383과 같은 거대한 음수입니다. 이게 정상인가? 어떻게 해결할 수 있습니까?
감사합니다.
개발중인 이미지 처리 응용 프로그램에 문제가 있습니다 (여기서는 초보자 용). getPixel()
메서드를 사용하여 특정 픽셀의 값을 추출하려고합니다.getPixel() 메서드를 사용하여 거대한 음수 값을 추출했습니다.
그래도 문제가 있습니다. 이 메서드에서 얻은 숫자는 -1298383과 같은 거대한 음수입니다. 이게 정상인가? 어떻게 해결할 수 있습니까?
감사합니다.
저는 전문가는 아니지만 16 진수 값을 얻고있는 것처럼 보입니다. 아마도 당신은 더 많은 것을 과 같은 RGB 레이어의 값과 같이 이해하고 싶을 것입니다.
private short[][] red;
private short[][] green;
private short[][] blue;
/**
* Map each intensity of an RGB colour into its respective colour channel
*/
private void unpackPixel(int pixel, int row, int col) {
red[row][col] = (short) ((pixel >> 16) & 0xFF);
green[row][col] = (short) ((pixel >> 8) & 0xFF);
blue[row][col] = (short) ((pixel >> 0) & 0xFF);
}
그리고 당신이 할 수있는 팩 픽셀 다시 각 채널의 변경 후 : 으로
당신이 뭔가를해야 그 RGB 값으로 픽셀을 압축을 풉니 다.
/**
* Create an RGB colour pixel.
*/
private int packPixel(int red, int green, int blue) {
return (red << 16) | (green << 8) | blue;
}
죄송합니다. 원하시는 것이 없으면 죄송합니다.
이 같은 뷰에서 픽셀을 얻을 수 있습니다 :
ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int pixel = bitmap.getPixel(x,y);
이제 각 채널을 얻을 수 있습니다 :
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
getPixel()
반환 색상을 지정된 위치에. x 또는 y이 범위를 벗어나는 경우 (음수 또는> = 각각 너비 또는 높이) 예외가 발생합니다.
반환되는 색상은 비 미리 곱하기 ARGB 값입니다.