首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在颤振中快速获取镜头框

如何在颤振中快速获取镜头框
EN

Stack Overflow用户
提问于 2018-06-28 14:17:31
回答 2查看 13.5K关注 0票数 21

我想在我的颤音应用程序的摄像头上实现近乎实时的OCR。为了做到这一点,我想以快速的方式访问相机数据。据我所知,我有两种选择,并且遇到了两种选择的障碍:

  1. 通过在CameraPreview周围放置一个RepaintBoundary并创建一个RenderRepaintBoundary,并调用boundary.toImage()来截取它的屏幕截图。这种方法的问题在于,.toImage方法似乎只捕获边界中绘制的小部件,而不捕获摄像机预览中的数据。对于这里描述的问题:https://github.com/flutter/flutter/issues/17687
  2. 使用controller.takePicture(filePath)从相机0.2.1获取图像,类似于示例文档。这里的问题是,需要超长时间才能获得图像(2-3秒)。我猜这是因为文件在捕获时保存到磁盘,然后需要从文件中再次读取。

是否有任何方式可以直接访问图片信息后,捕获,做的事情,如预处理和OCR?

EN

回答 2

Stack Overflow用户

发布于 2019-02-26 15:28:37

对于“接近实时的OCR",您需要CameraController#startImageStream

示例代码

代码语言:javascript
复制
import 'package:camera/camera.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(home: _MyHomePage()));

class _MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<_MyHomePage> {
  dynamic _scanResults;
  CameraController _camera;

  bool _isDetecting = false;
  CameraLensDirection _direction = CameraLensDirection.back;

  @override
  void initState() {
    super.initState();
    _initializeCamera();
  }

  Future<CameraDescription> _getCamera(CameraLensDirection dir) async {
    return await availableCameras().then(
      (List<CameraDescription> cameras) => cameras.firstWhere(
            (CameraDescription camera) => camera.lensDirection == dir,
          ),
    );
  }

  void _initializeCamera() async {
    _camera = CameraController(
      await _getCamera(_direction),
      defaultTargetPlatform == TargetPlatform.iOS
          ? ResolutionPreset.low
          : ResolutionPreset.medium,
    );
    await _camera.initialize();
    _camera.startImageStream((CameraImage image) {
      if (_isDetecting) return;
      _isDetecting = true;
      try {
        // await doSomethingWith(image)
      } catch (e) {
        // await handleExepction(e)
      } finally {
        _isDetecting = false;
      }
    });
  }
  Widget build(BuildContext context) {
    return null;
  }
}

这个功能被合并到https://github.com/flutter/plugins中,但并没有很好的文档。

参考:

票数 23
EN

Stack Overflow用户

发布于 2022-08-16 12:33:40

一个更好的解决方案(2022年)的实时OCR是使用相机在一个循环的频率为500毫秒,并处理图像使用谷歌ML工具包的文本识别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51085201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档