如何修改Android上的实时摄像头视图?
我正在搜索并发现这个应用https://play.google.com/store/apps/details?id=com.fingersoft.cartooncamera就是我想要做的好榜样。我也希望对我的相机视图应用一些效果。我需要找到一种方法来添加一些效果或在我的相机视图上绘制一些东西。
据我了解,我必须获取一些视频流,应用一些更改并在相机视图中显示。
有什么想法吗?
非常感谢!
答案 0 :(得分:2)
您可以在Android - Camera Preview和post中找到有关此主题的更多信息。 另一种方法是使用OpenCV。
我能想到的最小的代码片段是为了获取图像并在屏幕上预览它,如下所示:
public class MainActivity extends Activity implements Callback {
Camera camera;
SurfaceView surfaceView;
SurfaceHolder holder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
}
@Override
protected void onResume() {
super.onResume();
camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(ImageFormat.JPEG);
camera.setParameters(parameters);
holder = surfaceView.getHolder();
holder.addCallback(this);
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
// You could apply some pixel operations directly here.
Log.d("Camera", "Camera image aquired");
}
});
}
@Override
protected void onPause() {
super.onPause();
camera.stopPreview();
camera.release();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
camera.startPreview();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
可以在GitHub上找到执行此操作的完整示例。