【发布时间】:2016-07-18 19:40:59
【问题描述】:
我有一个对二进制矩阵执行腐蚀和膨胀的函数:
void Detector::morphOps(Mat& binFrame) {
Mat erodeElement = getStructuringElement(MORPH_ELLIPSE, Size(3, 3));
Mat dilateElement = getStructuringElement(MORPH_ELLIPSE, Size(10, 10));
erode(binFrame, binFrame, erodeElement);
dilate(binFrame, binFrame, dilateElement);
dilate(binFrame, binFrame, dilateElement);
}
这使我的程序在检测我想要跟踪的对象方面更加健壮。但是,这段代码对我的程序的其余部分来说是一个巨大的瓶颈。启用该功能后,我从 25-30 fps 降至
我也在考虑多线程,但我不确定如何在这里实现它,因为我对 android 和 opencv 还很陌生。上面的代码是我程序的原生 (jni) 部分。
编辑:到目前为止我尝试过的替代方案:
morphologyEx() 打开 + 关闭 - 效果不佳,因为扩张尺寸需要大于侵蚀尺寸。
morphologyEx() 关闭 + dilate() - 在 Android 上没有显着的性能提升。
将 MORPH_ELLIPSE 更改为 MORPH_RECT。我现在得到了 ~8fps,但这仍然很慢。
【问题讨论】:
标签: java android c++ multithreading opencv