Android Camera on Preview에서byte[]Bitmap으로 빠르게 변환
이전에 프레임 비율이 높지 않았을 때 BitmapFactory를 사용했습니다.decodeByteArray로 처리하는데 시간이 많이 걸립니다. 앞에서 촬영한 상태에서만 이미지를 처리하면 260ms가 소모됩니다. 다음은 이전의 처리 방식입니다.
YuvImage yuvimage = new YuvImage(
yuvData,
ImageFormat.NV21,
size.width,
size.height,
null);//data onPreviewFrame
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg( new Rect(0, 0,yuvimage.getWidth(), yuvimage.getHeight()), 100, baos);// 80--JPG [0-100],100
byte[] rawImage =baos.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
//options.inPreferredConfig = Bitmap.Config.RGB_565; // 8888
//options.inSampleSize = 8;
SoftReference softRef = new SoftReference(BitmapFactory.decodeByteArray(rawImage, 0,rawImage.length,options));//
Bitmap bitmap = (Bitmap) softRef.get();
새로운 방법에서 3~4ms만 있으면 이미지 처리를 완성할 수 있으며 Renderscript 내연 함수를 사용하여 YUV 이미지로 더욱 빠르게 변환할 수 있습니다.
사용된 변수:
private RenderScript rs;
private ScriptIntrinsicYuvToRGB yuvToRgbIntrinsic;
private Type.Builder yuvType, rgbaType;
private Allocation in, out;
onCreate 메서드에서 생성:
4
rs = RenderScript.create(this);
yuvToRgbIntrinsic = ScriptIntrinsicYuvToRGB.create(rs, Element.U8_4(rs));
onPreviewFrame 메서드에서 다음 메서드를 호출합니다.if (yuvType == null)
{
yuvType = new Type.Builder(rs, Element.U8(rs)).setX(dataLength);
in = Allocation.createTyped(rs, yuvType.create(), Allocation.USAGE_SCRIPT);
rgbaType = new Type.Builder(rs, Element.RGBA_8888(rs)).setX(prevSizeW).setY(prevSizeH);
out = Allocation.createTyped(rs, rgbaType.create(), Allocation.USAGE_SCRIPT);
}
in.copyFrom(data);
yuvToRgbIntrinsic.setInput(in);
yuvToRgbIntrinsic.forEach(out);
Bitmap bmpout = Bitmap.createBitmap(prevSizeW, prevSizeH, Bitmap.Config.ARGB_8888);
out.copyTo(bmpout);
개인 연락처:[email protected]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.