我正在将Python程序移植到C,它使用MSER(OpenCV)detectRegions . 我注意到奇怪的行为,C程序检测到的MSER区域数量明显低于Python程序 . 在调用detectRegions之前,我使用相同的图像作为它们的输入并执行相同的预处理步骤 . 对于特定的示例图像,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尺寸

一个 . 如果width> height则scale = width / 800.0

湾else scale = height / 600.0

C . 使用'resize'和上面的比例因子'scale'

  • 创建MSER对象

  • setDelta(4)

  • 调用detectRegions