|
Android camera2 下使用public void onImageAvailable(ImageReader reader)函数得到每一帧图像数据
image = reader.acquireLatestImage();需要对image数据进行yuv420转rgb,进行算法分析;当前在rk3568上使用opencv cpu转换1280*720分辨率的图像特别慢,不能满足实时性需求。使用libRGA进行格式转换。始终不能转换出正确的图像来。使用rknpu2中的android demo里面libRGA转换函数是基于camera1的,能够正常转换。将如下的转换方法进行处理camera2的image数据始终不能成功。求个libRGA转换camera2 image数据到RGB的方法。@Override
public void onPreviewFrame(byte[] data, Camera camera) {
mCamera0.addCallbackBuffer(data);
ImageBufferQueue.ImageBuffer imageBuffer = mImageBufferQueue.getFreeBuffer();
if (imageBuffer != null) {
long oldTime = System.currentTimeMillis();
RGA.colorConvert(data, RK_FORMAT_YCrCb_420_SP,
imageBuffer.mImage, RK_FORMAT_RGBA_8888,
CAMERA_PREVIEW_WIDTH, CAMERA_PREVIEW_HEIGHT, this.flip);
long currentTime = System.currentTimeMillis();
//float fps = 1000.f / (currentTime - oldTime);
//Log.d(TAG, "fps = "+String.valueOf(fps));
float times = currentTime - oldTime;
Log.d(TAG, "RGA.colorConvert times = "+String.valueOf(times)+"ms");
mImageBufferQueue.postBuffer(imageBuffer);
}
}
|
|