# Revision history [back]

### onCameraFrame Mat to Jpeg

Hi, So I'm a bit new to OpenCV and android :) I'm using the camera and want to capture the the frame data and stream it out of the device. I get the frame data in the onCameraFrame method and have the following questions:

• In what type does the data in Mat is? I saw somewhere that it might be YUV but from the samples as well as some tests I've done its more likely to be RGBA?
• I need to convert the data to Jpeg but when I use the following code I get a corrupted JPEG image. Any ideas what's wrong?

    Mat matRGB = new Mat();
Mat matYUV = new Mat();
Imgproc.cvtColor(frame.mat_, matRGB, Imgproc.COLOR_RGBA2RGB, 3);
Imgproc.cvtColor(matRGB, matYUV, Imgproc.COLOR_RGB2YUV, 3);
int iImageWidth = matYUV.cols(); //frame.sFrameResolution_.width;
int iImageHeight = matYUV.rows(); //frame.sFrameResolution_.height;

int iRawFrameDataSize = (int)matYUV.total() * matYUV.channels();
byte buffer[] = new byte[iRawFrameDataSize];
matYUV.get(0, 0, buffer);
android.graphics.Rect previewRect = new android.graphics.Rect(0, 0, iImageWidth, iImageHeight);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
final YuvImage image = new YuvImage(buffer, android.graphics.ImageFormat.YUY2, iImageWidth, iImageHeight, null);
image.compressToJpeg(previewRect, 100, baos);

byte[] jdata = baos.toByteArray();