在两个线程中拆分cameracontrol示例OpenCv4Android

时间:2013-06-06 11:45:47

标签: android multithreading opencv android-camera

我已经在Eclipse Juno中导入了OpenCv4Android的样本,ver。 2.4.5,称为“cameracontrol”。它可以在这里找到:Camera Control OpenCv4Android Sample

现在我想用这个项目作为我的基础。我想用图像处理技术处理每一帧,因此,为了提高性能,我想将项目的主要活动拆分为两个类:一个只是活动,一个是(一个线程)负责预习。

我该怎么办?有没有这方面的例子?

1 个答案:

答案 0 :(得分:0)

这可能不是一个完整的答案,因为我此刻只是在了解这一点,但我会提供尽可能多的信息。

您可能需要自己从相机中抓取图像并将其发送给线程。这是因为示例中的活动是使用相机中的帧调用的,并且必须返回要立即显示的帧作为返回值。你不能同时处理2个以上的帧,而不会在此期间显示空白屏幕或其他一些hacky内容。您可能希望在某处分配一个(固定大小的)缓冲区,然后在获得一个工作线程时开始处理一个帧(这将是调度程序)。完成工作线程后,他会通知将图像提供给视图的调度员。如果在所有工作线程都忙时(即缓冲区中没有空闲插槽)来自摄像机的帧,则帧被丢弃。一旦缓冲区中的空间再次释放,则接受并处理下一帧。

您可以查看initialitzeCameraJavaCameraView NativeCameraView函数的代码,以了解如何执行此操作(Google也应该提供帮助,因为OpenCV也必须这样做)。对我来说,原生相机表现得更好(即使没有繁重的处理,它也会更加顺畅),但是ymmv ......

我无法提供有关实施的实际细节,因为我自己还没有那么深入。我这样做可以提供一些想法。