我想使用我的Android手机来处理图片,例如,制作任何图片 使用de frame进行操作并显示更改(显示图像) 黑/白,灰度,棕褐色等)。 这是我的代码:
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 :(得分:2)
您可能需要考虑使用OpenCV或查看其中一个样本进行图像处理:
答案 1 :(得分:0)
我在http://nhenze.net/?p=107阅读了一篇文章 从我在帖子中看到的内容来看,这并不容易,因为onPreviewFrame不会与显示帧同步。
相反,他们使用技巧在SurfaceView上设置另一个视图。在新视图上,它们使用OpenGL ES在OpenGL纹理上渲染图像。
我自己没有玩过它,但希望这会让你朝着正确的方向前进。