OpenCV高斯模糊在android上很慢



我正在编写一个android应用程序,它使用OpenCV在图像上应用高斯模糊,但速度非常慢。

// Gaussian blur sample code
cv::Mat output;
chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
chrono::duration<int, std::milli> duration;
cv::GaussianBlur(<input>, output, cv::Size(25, 25), 0, 0);
duration = chrono::duration<int, std::milli>(std::chrono::duration_cast<std::chrono::duration<int, std::milli>>(std::chrono::steady_clock::now() - t1);
printf("%d", duration.count()); // Displays ~10-15 ms    

当我测量这个API所花费的时间时,它总是大约10-15毫秒。有人知道为什么它在android上如此缓慢吗?

问题缺少一些数据,因为"Android"毫无意义:图像有多大?你在用哪部电话?你是在使用库存构建,还是自己构建?25x25内核相当大。

如果你在armv7-a手机上使用的是Android版本,有一个大图像(几百万像素),这可能是意料之中的事。OpenCV的Android版本不使用NEON,也不使用多线程,这将有很大帮助。此外,大多数安卓手机在单核处理上比iPhone(特别是5s和6)慢得多,而且它们倾向于减少CPU时钟以节省电池并避免热问题。

我建议你在启用NEON的情况下自己构建OpenCV,并尝试一下。

相关内容

  • 没有找到相关文章

最新更新