2011-08-01 38 views
2

我想用我的android手機處理圖像,例如,使用任何 操作de框架並顯示它的變化(顯示圖像在 黑/白,灰度,棕褐色等)。 這是我的代碼:在Android上處理相機框架

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback,PreviewCallback { 
    SurfaceHolder mHolder; 
    Camera mCamera; 

    private Parameters parameters; 
    private Size previewSize; 
    private int[] pixels; 
    public CameraPreview(Context context) { 
    super(context); 
    SurfaceHolder mHolder = getHolder(); 
    mHolder.addCallback(this); 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL); 
    this.setFocusable(true); 
    this.requestFocus(); 
} 
public void surfaceCreated(SurfaceHolder holder) { 
    mCamera = Camera.open(); 
} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    mCamera.stopPreview(); 
    mCamera.release(); 
    mCamera = null; 
} 
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
setImageSize(); 
mCamera.startPreview(); 
mCamera.setPreviewCallback(this); 
} 
public void onPreviewFrame(byte[] data, Camera camera) { 
    // transforms NV21 pixel data into RGB pixels 
    decodeYUV420SP(pixels, data, previewSize.width, previewSize.height); 
    //here process the image 
    } 
} 

的問題是,我不知道如何顯示處理的新形象。 在onPreviewFrame我將yuv轉換爲rgb,然後我處理圖像,即 灰度轉換,但是我做了什麼來顯示新圖像? 我需要幫助,謝謝!!!!!!!!!!!

回答

0

我讀過一篇文章:http://nhenze.net/?p=107 從我在帖子中看到的,這不是很容易做到,因爲onPreviewFrame沒有同步顯示幀。

取而代之的是,他們使用一種技巧在SurfaceView上設置另一個視圖。在新視圖上,他們使用OpenGL ES在OpenGL紋理上渲染圖像。

我自己並沒有玩過它,但希望這會讓你在正確的方向。