2011-08-01 5 views
2

안드로이드 폰을 사용하여 이미지를 처리하고 싶습니다. 예를 들어 을 프레임과 함께 작동시키고 변경 사항과 함께 표시합니다 (이미지를 흑백, 회색조, 세피아 등으로 표시).).안드로이드에서 카메라 프레임 처리

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 텍스처에 이미지를 렌더링합니다.

나는 그걸 가지고 놀지 않았지만, 이것이 올바른 방향으로 나아갈 수 있기를 바랍니다.

관련 문제