convertYUV420ToImage function
Image
convertYUV420ToImage(
- CameraImage cameraImage
Implementation
image_lib.Image convertYUV420ToImage(CameraImage cameraImage) {
final width = cameraImage.width;
final height = cameraImage.height;
final uvRowStride = cameraImage.planes[1].bytesPerRow;
final uvPixelStride = cameraImage.planes[1].bytesPerPixel!;
final yPlane = cameraImage.planes[0].bytes;
final uPlane = cameraImage.planes[1].bytes;
final vPlane = cameraImage.planes[2].bytes;
final image = image_lib.Image(width: width, height: height);
var uvIndex = 0;
for (var y = 0; y < height; y++) {
var pY = y * width;
var pUV = uvIndex;
for (var x = 0; x < width; x++) {
final yValue = yPlane[pY];
final uValue = uPlane[pUV];
final vValue = vPlane[pUV];
final r = yValue + 1.402 * (vValue - 128);
final g = yValue - 0.344136 * (uValue - 128) - 0.714136 * (vValue - 128);
final b = yValue + 1.772 * (uValue - 128);
image.setPixelRgba(x, y, r.toInt(), g.toInt(), b.toInt(), 255);
pY++;
if (x % 2 == 1 && uvPixelStride == 2) {
pUV += uvPixelStride;
} else if (x % 2 == 1 && uvPixelStride == 1) {
pUV++;
}
}
if (y % 2 == 1) {
uvIndex += uvRowStride;
}
}
return image;
}