【问题标题】:How to get camera screen in android?如何在android中获取相机屏幕?
【发布时间】:2014-07-31 10:02:42
【问题描述】:

在我的 Android 应用中,我正在尝试进行一些图像识别,我想在拍照之前打开相机并查看相机生成的图像,例如相机浏览模式。

基本上,当您浏览时,我想不断地抓取当前屏幕,然后阅读它并生成一些对象来更新屏幕上的一些文本。像这样的

@Override
// this gets called every 5 seconds while in camera browse mode. bitmap is the image of the camera currently
public void getScreen(Bitmap bitmap) {
    MyData data = myalgorithm(bitmap);
    displayCountOnScreen(data);
}

我看到了这个应用https://play.google.com/store/apps/details?id=com.fingersoft.cartooncamera&hl=en

在相机浏览模式下,他们会更改屏幕并将其他一些 GUI 内容放在屏幕上。我也想这么做。

有人知道我该怎么做吗?

谢谢

【问题讨论】:

标签: android camera android-camera


【解决方案1】:

如果您只想在屏幕上放置一些 GUI 元素,则无需将所有预览帧作为位图获取(尽管您也可以这样做,如果您愿意的话):

为您希望视频数据出现的位置创建一个带有 SurfaceView 的布局,然后将其他视图放在顶部。

在onCreate中,可以这样获取:

    surfaceView = (SurfaceView)findViewById(R.id.cameraSurfaceView);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this);  // For when you need to know when it changes.
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

创建相机时,需要将 Surface 传递给它以在其上显示预览,请参阅: http://developer.android.com/reference/android/hardware/Camera.html#setPreviewDisplay(android.view.SurfaceHolder):

    Camera camera  = ...        
    ...
    camera.setPreviewDisplay(surfaceHolder);
    camera.startPreview();

如果您想进行图像识别,您需要使用原始图像字节。在这种情况下,注册一个 PreviewCallback,见这里:

http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多