我正在创建可与Tensorflow一起使用的Android应用。为了提供图像,我需要按颜色将位图转换为浮点数数组。我发现执行此操作的以下代码:
float[] floatValues = new float[width * height * 3];
int[] intValues = new int[width * height];
bitmap.getPixels(intValues, 0, width, 0, 0, width, height);
for (int i = 0; i < intValues.length; ++i) {
final int val = intValues[i];
floatValues[i * 3 + 0] = ((val >> 16) & 0xFF) - imageMean) / imageStd;
floatValues[i * 3 + 1] = ((val >> 8) & 0xFF) - imageMean) / imageStd;
floatValues[i * 3 + 2] = (val & 0xFF) - imageMean) / imageStd;
}
我找不到如何计算imageMean或imageStd的方法,所以有人写道我也可以只使用
floatValues[i * 3 + 2] = (val & 0xFF) / 255
(3行中的每行)
但是它给出了错误的结果(与任何输入相同)。 Here我发现它每次都给出0。因此,我需要弄清楚如何计算平均值和标准值。我还听说每种颜色的这些值都不同。
任何帮助都受到赞赏。
P.S。我的图片尺寸为250x250,3个颜色通道。
答案 0 :(得分:0)
尝试一下:floatValues [i * 3 + 2] =(val&0xFF)/ 255.0f,这是一种归一化。 我还编写了一个可与Tensorflow一起使用的Android应用。您可以参考我的项目:https://github.com/tz28/Chinese-number-gestures-recognition/blob/master/README.en-US.md 希望对您有帮助。