• Обрезание изображения по 3 точкам opencv?

    @f4f
    Вырезрать ROI можно только прямоугольный.
    Однако можно вырезать прямоугольный ROI, который будет описывать необходимый треугольник. И с помощью функции cv2.fillConvexPoly() залить лишние участки изображения черным цветом (0, 0, 0). При определении среднего цвета важно именно количество пикселей в треугольнике учитывать, а не все в прямоугольном ROI.
    Решение rPman'а в целом о том же самом.
    Ответ написан
    Комментировать
  • Какую точность может обеспечить openCV с картой глубин?

    @f4f
    Чтобы точность была 0.1мм на 0.5м (500мм) разрешение изображения (по вертикали вероятнее всего), представляющего карту глубины, должно быть минимум 5000 пикселей (500 / 0.1 = 5000). Думаю, если разрешение будет в 4-5 раз выше этого значения, то на близкую точность можно будет выйти (но скорость построения карты глубины для такого большого изображения будет очень низкой). Так что действительно много зависит от камер.

    Делал такую камеру, главным моментом стала калибрация камер (и получение матрицы искажений) и точное взаимное расположение.

    В описанном вами варианте мне сложно представить условия съемки.
    Ответ написан
    Комментировать
  • Как оптимизировать функцию на OpenCV?

    @f4f
    Мне кажется, надо порядок условных операторов поменять (h * 1.2 > h > h *0.8). В текущем варианте h * 1.2 не будет (поскольку первое условие выполнится).

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

    Из очевидного, что касается именно opencv - нету смысла всю картинку переводить в lab, если потом вырезается roi. Сначала вырежьте roi, а потом переводите в lab. Аналогично можно сделать с mask_hard (хотя если использовать адаптивные методы бинаризации, то результат может немного отличаться по краям roi)

    Не так хорошо знаком с opencv для python, но в версии для c++ по умолчанию используется распараллеливание, где возможно. Имеет смысл собирать библиотеку с openmp / tbb и смотреть, что какой дает прирос.

    Если обрабатывается пачка картинок, то явно запускать в несколько потоков, аггрегируя результаты, если это необходимо.
    Ответ написан
    Комментировать
  • Как осуществить волновой алгоритм поиска кратчайший пути на C++?

    @f4f
    На википедии есть псевдокод алгоритма, который можно реализовать стандартными конструкциями языка С/С++.

    Алгоритм Ли
    Инициализируйте двумерный массив типа int. Используйте значение ячейки -1 для стенок лабиринта. В отдельных переменных сохраните индексы начала и конца лабиринта.
    Распространение и восстановление волны полностью соответствует описанию алгоритма в вики. Трудность только при растпространении волны в определении последних помеченных ячеек. Для начала можно использовать полный перебор массива, потом усложнить - применить рекурсивные функции или граммотно переделать циклы.
    Ответ написан
    Комментировать