如何在 Android 上修改实时摄像头 View ?
我正在搜索并找到了这个应用程序https://play.google.com/store/apps/details?id=com.fingersoft.cartooncamera作为我想做的事情的一个很好的例子。我也想对我的相机 View 应用一些效果。我需要找到一种方法来添加一些效果或在我的相机 View 上绘制一些东西。
据我所知,我必须获取一些视频流,应用一些更改并在相机 View 中显示出来。
有什么想法吗?
非常感谢!
最佳答案
您可以在 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 上找到执行此操作的完整示例。
关于android - 修改实时摄像机 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13846500/