我正在将 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)。
对于这两个程序,执行以下步骤:
使用 imread 读取图像
使用带有 COLOR_BGR2GRAY 的 cvtColor 转换为灰度
执行直方图均衡:
a. CLAHE object is created using clipLimit=2.0, tileGridSize - 8x8 b. apply CLAHE on gray image
- 获取图像的高度和宽度。
将图像缩放到 600X800 SVGA 大小
一个。如果宽度 > 高度则比例 = 宽度 / 800.0
湾。否则比例 = 高度 / 600.0
C。使用具有上述比例因子 'scale' 的 'resize'
- 创建 MSER 对象
- 设置增量(4)
- 调用detectRegions