2011-08-01 17 views
2

画像を処理するためにAndroid携帯を使用したいとします。たとえば、 をフレームで操作し、変更を加えて表示します( 黒/白、グレースケール、セピアなどの画像を表示します)。 )。 これは私のコードです: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テクスチャ上にイメージをレンダリングします。

私はそれ自身で遊んだことはありませんが、これがあなたを正しい方向に向けることを願っています。

関連する問題