Converts YUV data for a pixel (such as from the camera preview data) to RGB values. - Android Camera

Android examples for Camera:Camera Preview

Description

Converts YUV data for a pixel (such as from the camera preview data) to RGB values.

Demo Code

/* //from   ww  w .jav  a2  s  .c om
 * Copyright 2012 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//package com.java2s;

public class Main {
    /** Converts YUV data for a pixel (such as from the camera preview data) to RGB values. */
    public static void yuvToRgb(byte y, byte u, byte v, int[] rgb) {
        // adapted from http://stackoverflow.com/questions/8399411/how-to-retrieve-rgb-value-for-each-color-apart-from-one-dimensional-integer-rgb
        // produces 18-bit RGB components, so shift by 10
        int yy = (0xff & y) - 16;
        if (yy < 0)
            yy = 0;
        // u and v need to be translated to +-128
        int uu = (0xff & u) - 128;
        int vv = (0xff & v) - 128;

        int y1192 = 1192 * yy;
        int red = (y1192 + 1634 * vv) >> 10;
        int green = (y1192 - 833 * vv - 400 * uu) >> 10;
        int blue = (y1192 + 2066 * uu) >> 10;

        if (red < 0)
            red = 0;
        if (red > 255)
            red = 255;
        if (green < 0)
            green = 0;
        if (green > 255)
            green = 255;
        if (blue < 0)
            blue = 0;
        if (blue > 255)
            blue = 255;

        rgb[0] = red;
        rgb[1] = green;
        rgb[2] = blue;
    }
}

Related Tutorials