我正在开发一个图像处理应用程序的问题(新手在这里).我试图通过使用getPixel()方法提取特定像素的值.
我虽然遇到了问题.我从这种方法得到的数字是一个巨大的负数,类似于-1298383.这是正常的吗?我该如何解决?
谢谢.
最佳答案 我不是专家,但对我来说,看起来你得到的是十六进制值.也许你想要一些像每个RGB层的值更容易理解的东西.
要将像素解压缩为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);
}
在每个通道发生变化后,您可以将像素打包回来.
/**
* Create an RGB colour pixel.
*/
private int packPixel(int red, int green, int blue) {
return (red << 16) | (green << 8) | blue;
}
对不起,如果它不是你想要的.