OpenCV MSER обнаруживает регионы C++ Vs. питон

Я портирую программу на Python на C++, которая использует MSER (OpenCV) DeteRegions. Я замечаю странное поведение, что количество областей MSER, обнаруженных программой на C++, значительно меньше, чем в Python. Я использую одно и то же изображение в качестве входных данных для них обоих и выполняю одинаковые шаги предварительной обработки перед вызовом detectRegions. Для конкретного примера изображения, количество областей MSER, обнаруженных программой Python, было 6620, но после переноса на C++ я получаю только 1164.

Единственное отличие в моем конце состоит в том, что для Python я использую x64-версию cv2.pyd (\build\python\2.7\x64), в то время как для C++ я использую x86 (\build\x86\vc12).

Для обеих программ выполняются следующие шаги:

  1. Прочитать изображение, используя imread

  2. Преобразовать в оттенки серого, используя cvtColor с COLOR_BGR2GRAY

  3. Выполните выравнивание гистограммы:

    a. CLAHE object is created using clipLimit=2.0, tileGridSize - 8x8
    
    b. apply CLAHE on gray image
    
  4. Получите высоту и ширину изображения.
  5. Масштабировать изображение до размера 600X800 SVGA

    а. если ширина> высота, то масштаб = ширина / 800,0

    б. остальное масштаб = высота / 600,0

    с. Используйте "изменить размер" с вышеупомянутым коэффициентом масштабирования "масштаб"

  6. Создать объект MSER
  7. setDelta(4)
  8. Вызов обнаружить регионы

0 ответов

Другие вопросы по тегам