android — производительность OpenCV SimpleBlobDetector

Я использую SimpleBlobDetector OpenCV, чтобы найти определенный набор небольших функций в изображениях. Я работаю в C ++ native (JNI) на Android. На моем более новом более быстром телефоне это работает хорошо.

Однако на более старом медленном телефоне он слишком медленный. Я обнаружил, что самая медленная часть — владение. Изменение трех параметров 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);

Я запутываюсь, когда слишком много параметров, чтобы возиться. Я также обеспокоен тем, что условия изображения будут различаться, и тогда придется использовать другие параметры. Я бы хотел «адаптивный адаптивный» трешолдинг, если вы понимаете, о чем я?

Что я могу сделать, чтобы заставить его работать, и какими еще способами мы можем сделать это, чтобы получить более высокую скорость?

0

Решение

Предполагая, что вы имеете дело с видео, а не со случайным набором изображений, один из способов уменьшить нагрузку на ваше устройство при выполнении этого типа обнаружения состоит в том, чтобы не делать его очень кадровым.

Например, вы можете сделать это даже 10-й кадр, а не каждый кадр.

Вы можете поэкспериментировать с различными интервалами, чтобы увидеть, сможете ли вы найти такой, который уменьшит нагрузку и при этом обнаружит достаточно быстро для выбранных вами вариантов использования.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]