Я использую SimpleBlobDetector
OpenCV, чтобы найти определенный набор небольших функций в изображениях. Я работаю в C++ native (JNI) на Android. На моем новом более быстром телефоне он работает хорошо.
Однако на старом более медленном телефоне это слишком медленно. Я обнаружил, что самая медленная часть — это удержание. Изменение трех параметров порога для ускорения просто приводит к тому, что алгоритм перестает работать.
Я нашел версию исходного кода на какой-то веб-странице и начал ее модифицировать.
Вместо этого я пытаюсь использовать адаптивное пороговое значение, а затем выполнить некоторое размытие и расширение после, для хорошей меры, но мне не удалось получить каких-либо разумных результатов. Может параметры не те?
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);
Меня смущает, когда слишком много параметров, с которыми приходится возиться. Меня также беспокоит то, что условия изображения будут меняться, и тогда придется использовать другие параметры. Я бы хотел "адаптивный адаптивный" порог, если вы понимаете, о чем я?
Что я могу сделать, чтобы заставить его работать, и как еще мы можем сделать это, чтобы получить более высокую скорость?