Android 有人能帮我理解这个代码吗?张流岩
在SorFlow Lite Android应用程序中,我们必须将位图转换为字节缓冲区,用于此操作的代码为:Android 有人能帮我理解这个代码吗?张流岩,android,tensorflow,tensorflow-lite,Android,Tensorflow,Tensorflow Lite,在SorFlow Lite Android应用程序中,我们必须将位图转换为字节缓冲区,用于此操作的代码为: for (int i = 0; i < DIM_IMG_SIZE_X; ++i) { for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) { final int val = intValues[pixel++]; imgData.putFloat((((val >> 16) & 0xFF)-IMAGE_M
for (int i = 0; i < DIM_IMG_SIZE_X; ++i) {
for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) {
final int val = intValues[pixel++];
imgData.putFloat((((val >> 16) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
imgData.putFloat((((val >> 8) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
imgData.putFloat((((val) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
}
}
for(int i=0;i>16)和0xFF)-图像平均值/图像标准值);
imgData.putFloat(((val>>8)和0xFF)-图像平均值/图像标准值);
imgData.putFloat(((val)和0xFF)-图像平均值/图像标准值);
}
}
有人能解释一下什么是图像和STD,以及这些代码行中发生了什么吗?提供的代码解释如下:
for (int i = 0; i < DIM_IMG_SIZE_X; ++i) {
for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) {
for(int i=0;i
在这里,我们创建循环,循环将在列(x轴)上迭代,然后在列(y轴)中的每个像素上迭代
- 这里,
是从0到255的所有图像的所有像素值的平均值。它可能是127.5(0和255的平均值)IMAGE\u MEAN
- STD将是标准偏差。它是方差的平方根。请参阅
putFloat
方法在imgData
对象上被调用3次,因为它将RGB标准值附加到列表中。每个像素都有这3个值,这3个值是标准化和附加的3个标量,范围为0到255
- >>运算符使用位运算从单个像素整数值中获取这3个值。您可以在internet上获取有关它们的信息
- 逐像素读取图像
- 从像素获取RGB值
- 标准化3个值并将其存储在列表中
IMAGE\u MEAN
和IMAGE\u STD
似乎是变量,在方法中的某个地方初始化或作为类变量初始化。如果它们都是大写,则很可能是类变量,可能是最终的,也可能是静态的。在初始化旁边的注释可能会让您更深入地了解它们的本质。(这是一个很好的例子,说明了为什么您应该始终为以后可能使用您的代码的人注释代码)