Home Ask Login Register

Developers Planet

Your answer is one click away!

Marko February 2016

Get pixels matrix from YUV byte array

I need to get pixels matrix from YUV byte[] array which I obtain from camera preview in onPreviewFrame function. I need pixels in form of matrix in order to implement further image processing. I'm doing this in the following way:

  1. byte[] array to YUV image
  2. YUV image to JPEG.
  3. JPEG to Bitmap.
  4. Bitmap to pixels array.
  5. Pixels array to pixels matrix.

Is there any optimal way for achieving same results? Currently, my implementation is as follow.

public void onPreviewFrame(byte[] data, Camera camera) {

try {
    final YuvImage image = new YuvImage(data, ImageFormat.NV21,
            size.width, size.height, null);
    final File file = new File(Environment.getExternalStorageDirectory()
            .getPath() + "/" + String.valueOf(br) + "out.jpg");
    final FileOutputStream file_o_s = new FileOutputStream(file);
    Thread comp_thread = new Thread(new Runnable() {
        public void run() {
            try {
                        new Rect(0, 0, size.width, size.height), 40,

                Bitmap bMap = BitmapFactory.decodeFile(file.getPath());
                int[] pixels_array = new int[bMap.getHeight()*bMap.getWidth()];
                bMap.getPixels(pixels_array, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight());
                int[][] pixels_matrix = new int[bMap.getHeight()][bMap.getWidth()];

                int start = 0;
                for (int r = 0; r < bMap.getHeight(); r++) {
                    int L = Math.min(bMap.getWidth(), pixels_array.length - start);
                    pixels_matrix[r] = java.util.Arrays.copyOfRange(pixels_array, start, start + L);
                    start += L;

            } catch (IOException e) {


Francisco Durdin Garcia February 2016

Just specify that camera preview must provide RGB images

i.e. Camera.Parameters.setPreviewFormat(ImageFormat.RGB_565);

Post Status

Asked in February 2016
Viewed 2,875 times
Voted 5
Answered 1 times


Leave an answer

Quote of the day: live life