正如标题所说,如何使用ScriptIntrinsicColorMatrix将位图RGB转换回YUV byte []?下面是示例代码(zxing无法解码):
public byte[] getYUVBytes(Bitmap src, boolean initOutAllocOnce){
if(!initOutAllocOnce){
outYUV = null;
}
if(outYUV == null){
outYUV = Allocation.createSized(rs, Element.U8(rs), src.getByteCount());
}
byte[] yuvData = new byte[src.getByteCount()];
Allocation in;
in = Allocation.createFromBitmap(rs, src,
Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
scriptColor.setRGBtoYUV();
scriptColor.forEach(in, outYUV);
outYUV.copyTo(yuvData);
return yuvData;
}
我注意到的一件事是从原始相机YUV字节是3110400字节但是在使用ScriptIntrinsicColorMatrix转换后变为8294400,我认为这是错误的。
YUV的原因 - > BW - > YUV是我想将图像转换为黑白(不是灰度)并返回YUV进行zxing解码,同时在surfaceview中显示黑白(如自定义相机滤镜)。
尝试下面的代码,但它有点慢(可以通过zxing解码)。
int[] intArray = null;
intArray = new int[bmp.getWidth() * bmp.getHeight()];
bmp.getPixels(intArray, 0, bmp.getWidth(), 0, 0, bmp.getWidth(), bmp.getHeight());
LuminanceSource source = new RGBLuminanceSource(cameraResolution.x, cameraResolution.y, intArray);
data = source.getMatrix();
RGB到YUV的任何其他替代方案都很快吗?如果无法完成ScriptIntrinsicColorMatrix类?
请,谢谢