我已经将OpenCv4Android的示例导入到Eclipse Juno中。2.4.5,称为"cameracontrol“。它可以在这里找到:Camera Control OpenCv4Android Sample。
现在我想使用这个项目作为我的基础。我希望使用图像处理技术处理每个帧,因此,为了提高性能,我希望将项目的主要活动分成两个类:一个只是活动,另一个(线程)负责预览。
我该怎么做呢?有没有关于这方面的例子?
发布于 2013-06-08 05:38:14
这可能不是一个完整的答案,因为我自己目前才了解到这一点,但我会尽可能提供更多的信息。
您可能必须自己从相机中获取图像,并将其发送到线程。这是因为在本例中,您的活动从相机中调用了一个帧,并且必须返回(立即)要显示的帧作为返回值。你不能让2+帧并行处理,而不同时显示一个空白屏幕或者其他一些麻烦的东西。您可能希望在某个地方分配一个(固定大小的)缓冲区,然后在获得一个工作线程(这将是dispatcher)时开始处理一个帧。一旦你的工作线程完成,他就会通知调度器,调度器将图像提供给视图。如果帧来自摄像机,而所有工作线程都很忙(即缓冲区中没有空闲时隙),则会丢弃该帧。一旦缓冲区中的一个空间再次被释放,下一帧就会被接受和处理。
你可以查看JavaCameraView
和NativeCameraView
的initialitzeCamera
函数的代码来了解如何做到这一点(谷歌也应该提供帮助,因为没有OpenCV的应用程序也必须这样做)。对我来说,原生摄像头的性能要好得多(即使没有繁重的处理,它也要平滑得多),但ymmv…
关于实现的实际细节我无能为力,因为我自己还没有深入了解它。不过,我希望这能提供一些想法。
https://stackoverflow.com/questions/16961298
复制相似问题