Closed yeyupiaoling closed 6 years ago
大体上是没错的,只是通道顺错了而已,这样读取是RGB的,但CIFAR训练时是BGR的,所以要转换一下:
public byte[] getPixelsBGR(Bitmap bitmap) {
int bytes = bitmap.getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes);
bitmap.copyPixelsToBuffer(buffer);
byte[] temp = buffer.array();
byte[] pixels = new byte[(temp.length/4) * 3];
for (int i = 0; i < temp.length/4; i++) {
pixels[i * 3] = temp[i * 4 + 2]; //B
pixels[i * 3 + 1] = temp[i * 4 + 1]; //G
pixels[i * 3 + 2] = temp[i * 4 ]; //R
}
return pixels;
}
@Xreki 我根据Android的Dome做了一个图像分类的,但是在读取出了点问题。在Java中,是把图像转成字节数组的,所以我也是这个样做,如下代码。但是pixels这个字节数组得到的结果是不定长的,但是图像明明都是3*32*32的。大小应该都是3072才对。这是为什么呢?
就是因为上面的大小没有充满矩阵,导致array很多都是0的。
这个怎么解决???求解答。