android - 修改实时摄像机 View

标签 android android-camera

如何在 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/

相关文章:

android - 从非 Activity 中拍照

android - 如何在 android 的深层链接中恢复应用程序?

android - 尝试从空对象引用的字段 'int android.media.CamcorderProfile.fileFormat' 读取

android - 在 webview 中更改为后置摄像头 (Android)

android - 0.3 MP前置摄像头无法使用zxing读取QR码

android - 为什么RelativeLayout.LayoutParams.addRule() 不起作用?

android - 广播接收器 MY_PACKAGE_REPLACED 从未调用

android - Android CameraX 预览质量不佳(取景器)

android - Camera.open() 阻塞 UI 线程

android - 如何在新 Activity 中使用点击的图片?