检测并计数图像中的物体
我正在尝试用Python写一个脚本,来检测和统计图像中的物体,但我失败得很惨。
这是我第一次对计算机视觉感兴趣并尝试做一些相关的事情。我试着使用cv2模块(OpenCV),按照一些关于特征匹配和模板匹配的教程来学习,教程可以在这里找到。我也尝试过使用scikit-image,但结果也不理想。我还考虑过寻找轮廓,然后进行二维曲线匹配。
让我再多解释一下我的问题。我有一组图标,这些图标组成了一幅大图。这个图的构成是一个简单的背景或者透明背景,以及一些来自图标集的图像。这些图标集的图像基本上可以经历三种基本的变化:缩放、旋转和移动。它们也可能会重叠在一起。
我希望这个脚本的输出结果大概是这样的:
C -> 1
D -> 1
E -> 1
F -> 1
G -> 1
H -> 2
I -> 3
J -> 0
我现在打算试试Dlib,看看能否用机器学习算法来解决问题。我觉得我可能在用一种比实际需要的更复杂的方法来解决我的问题。如果有任何建议会很棒,我也愿意尝试任何适合Python的库。
PS:抱歉没有在这里发布图片,因为我的声望还不够。
1 个回答
1
你可以尝试很多方法。不过,如果你想要快速简单地解决问题,可以考虑调整你的图像集合,让每个类别的颜色明显不同且独特。这样,你就可以通过观察颜色来判断物体是否存在,甚至更好的是,可以数一下特定颜色的轮廓数量。
下面是一个伪代码的步骤:
- 对图像进行预处理——(标准化,使用反向投影函数只处理目标颜色的阈值)
- 找到轮廓
- 对每个轮廓进行以下操作
- 检查它是否是有效的“特征”轮廓——你可以通过过滤一些噪声区域来进一步优化你的程序
- 估计它最可能属于哪个类别。
这样做应该能让你的程序运行得相当快。否则,你就得对图标的大小、旋转、遮挡或重叠情况做一些假设。