OpenCV SimpleBlobDetector速度性能

时间:2018-02-12 16:16:21

标签: android c++ performance opencv opencv4android

我使用OpenCV的SimpleBlobDetector来查找图像中的一组特定小特征。我在Android上使用C ++ native(JNI)。在我更新的速度更快的手机上,它运行得很好。

然而,在较旧的较慢的手机上,它太慢了。我发现最慢的部分是剪贴画。修改三个theshold参数以加快速度只会使算法停止工作。

我在某个网页上找到了一个源代码版本并开始修改它。

我尝试使用自适应阈值,然后执行一些侵蚀和扩张,好的措施,但我没有设法获得任何合理的结果。也许这些参数是关闭的?

adaptiveThreshold(mGr, mBin, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, 25, 30);
Mat kernel = getStructuringElement(MORPH_CROSS, Size(3,3), Point(1,1));
erode(mBin, mBin, kernel);
dilate(mBin, mBin, kernel, Point(-1,-1), 5);

当有太多参数需要操作时,我感到困惑。我也担心图像条件会有所不同,然后必须使用其他参数。如果你知道我的意思,我想要一个“自适应”自适应阈值处理?

我可以做些什么才能让它发挥作用,以及我们可以通过其他方式来提高速度?

1 个答案:

答案 0 :(得分:0)

假设您正在处理视频而不是一组随机图像,那么在进行此类检测时,减少设备负载的一种方法就是不要进行框架处理。

例如,您甚至可以在第10帧而不是每帧进行。

您可以尝试不同的时间间隔,看看是否可以找到一个减少负载的时间间隔,同时仍能快速检测到所选用例。