我正在将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