title: OpenCV for Android: Convert Camera preview from YUV to RGB with Imgproc.cvtColor
body: <p>I get a runtime error if I try to convert camera preview YUV byte array
  to a RGB(A) byte array with Imgproc.cvtColor( mYUV_Mat, mRgba_Mat, Imgproc.COLOR_YUV420sp2RGBA, 4 )
  in onPreviewFrame(byte[] data, Camera camera):</p>
  
  <p>Preview.java:</p>
  
  <pre><code>     mCamera.setPreviewCallback(new PreviewCallback() {
            public void onPreviewFrame(byte[] data, Camera camera)
            {
              // Pass YUV data to draw-on-top companion
              System.arraycopy(data, 0, mDrawOnTop.mYUVData, 0, data.length);
              mDrawOnTop.invalidate();
            }
         });
  </code></pre>
  
  <p>DrawOnTop.java:</p>
  
  <pre><code>public class DrawOnTop extends View {
  Bitmap mBitmap;
  Mat mYUV_Mat;
  protected void onDraw(Canvas canvas) {
      if (mBitmap != null)
      {
  
          canvasWidth = canvas.getWidth();
          canvasHeight = canvas.getHeight();
          int newImageWidth = 640;
          int newImageHeight = 480;
          marginWidth = (canvasWidth - newImageWidth)/2;
  
          if( mYUV_Mat != null ) mYUV_Mat.release();
  
          //mYUV_Mat = new Mat( newImageWidth, newImageHeight, CvType.CV_8UC1 );
          mYUV_Mat = new Mat( newImageWidth, newImageHeight, CvType.CV_8UC4 );
          mYUV_Mat.put( 0, 0, mYUVData );
  
          //Mat mRgba_Mat = new Mat();
          Mat mRgba_Mat = new Mat(newImageWidth,newImageHeight,CvType.CV_8UC4);
  
          //Mat mRgba_Mat = mYUV_Mat;
  
          //Imgproc.cvtColor( mYUV_Mat, mRgba_Mat, Imgproc.COLOR_YUV2RGBA_NV21, 4 );
          //Imgproc.cvtColor( mYUV_Mat, mRgba_Mat, Imgproc.COLOR_YUV420sp2RGB, 4 );
          Imgproc.cvtColor( mYUV_Mat, mRgba_Mat, Imgproc.COLOR_YUV420sp2RGBA, 4 );
  
  
          // Draw Bitmap New:
          Bitmap mBitmap = Bitmap.createBitmap( newImageWidth, newImageHeight, Bitmap.Config.ARGB_8888 );
          Utils.matToBitmap( mRgba_Mat, mBitmap );
          mRgba_Mat.release();
  }
  }
  </code></pre>
  
  <p>The conversion mYUV_Mat.put( 0, 0, mYUVData ) runs correctly.
  But the attempts to convert mYUV_Mat to mRgb_Mat using Imgproc.cvtColor
  lead all to runtime errors ("Source not found." with Eclipse).</p>
  
  <p>What is the correct Imgproc.cvtColor command for my goal?</p>
  
  <p>(I don't want to use a Java YUV2RGB(A) decode method because it's to slow
  for image processing. I want to use the OpenCV Imgproc.cvtColor method
  because I can do native calls)</p>