我已将 OpenCv4Android 版本的示例导入 Eclipse Juno。2.4.5,称为“cameracontrol”。可以在这里找到:Camera Control OpenCv4Android Sample。
现在我想用这个项目作为我的基础。我想用图像处理技术处理每一帧,所以,为了提高性能,我想把项目的主要活动分成两个类:一个只是活动,一个(线程)负责预览。
我能怎么做?有没有这方面的例子?
我已将 OpenCv4Android 版本的示例导入 Eclipse Juno。2.4.5,称为“cameracontrol”。可以在这里找到:Camera Control OpenCv4Android Sample。
现在我想用这个项目作为我的基础。我想用图像处理技术处理每一帧,所以,为了提高性能,我想把项目的主要活动分成两个类:一个只是活动,一个(线程)负责预览。
我能怎么做?有没有这方面的例子?
这可能不是一个完整的答案,因为我目前只是自己了解这个问题,但我会提供尽可能多的信息。
您可能必须自己从相机中获取图像并将其分派给线程。这是因为您在示例中的活动被来自相机的帧调用,并且必须返回要显示的帧(立即)作为返回值。如果同时不显示空白屏幕或其他一些骇人听闻的东西,您就无法并行处理 2+ 帧。您可能希望在某处分配一个(固定大小的)缓冲区,然后在获得一个(这将是调度程序)时使用工作线程开始处理一个帧。一旦您的工作线程完成,他就会通知将图像提供给视图的调度程序。如果在所有工作线程都忙(即缓冲区中没有空闲槽)时来自相机的帧,则丢弃该帧。一旦缓冲区中的空间再次释放,
您可以查看initialitzeCamera
函数的代码JavaCameraView
并NativeCameraView
了解如何执行此操作(谷歌也应该提供帮助,因为没有 OpenCV 的应用程序也必须这样做)。对我来说,本机相机的性能要好得多(即使没有繁重的处理,它也更加流畅),但是 ymmv ......
我无法提供有关实施的实际细节,因为我自己还没有那么深入。我很喜欢这提供了一些想法。