1

我正在将 Python 程序移植到使用 MSER (OpenCV) 检测区域的 C++。我注意到 C++ 程序检测到的 MSER 区域的数量明显低于 Python 的奇怪行为。我使用相同的图像作为它们的输入,并在调用检测区域之前执行相同的预处理步骤。对于特定的示例图像,Python 程序检测到的 MSER 区域数为 6620,但在移植到 C++ 后,我只得到 1164。

唯一不同的是,对于 Python,我使用的是 x64 版本的 cv2.pyd (\build\python\2.7\x64),而对于 C++,我使用的是 x86 (\build\x86\vc12)。

对于这两个程序,执行以下步骤:

  1. 使用 imread 读取图像

  2. 使用带有 COLOR_BGR2GRAY 的 cvtColor 转换为灰度

  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

    C。使用具有上述比例因子 'scale' 的 'resize'

  6. 创建 MSER 对象
  7. 设置增量(4)
  8. 调用detectRegions
4

0 回答 0