python图像识别
image
image-processing
python
python-imaging-library
5
0

我想做的是一个简单应用程序的图像识别:

  1. 给定图像(500 x 500)pxs(1色背景)
  2. 图像将只有1个(50x50)像素的几何图形(三角形,正方形或smaleyface :))。
  3. python将识别图形并显示什么是几何图形。

任何链接?有什么提示吗?任何API? thxs :)

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

如果您知道数据的状态空间,则可以使用主成分分析。对于PCA,必须摆放所有对象(在屏幕中央)。 PCA不会进行检测,但会将对象分成唯一的层,您可以在其中将其标识为三角形等。另外请注意:这不是缩放或旋转不变的。

[我不记得这种技术叫什么了,但是它类似于邮局手写记录的方式]如果您只能处理非弯曲的曲面,则可以进行边缘检测,然后在相交处进行采样以获得近似值。相似。

收藏
评论

OpenCV具有斑点分析工具,它将为您提供有关形状的度量,您可以将其馈送到您最喜欢的模式识别算法中:)例如。当圆的比率约为0.78时,矩形的面积/(高度*宽度)比率为1.0。

收藏
评论

典型的python工具链为:

至于形状的区别 ,我将通过查看背景的形状来获得其轮廓。然后,我将使用角点检测算法(例如,Harris)来检测角点的数量。三角形有3个角,正方形有4个,无笑脸。这是Scipy的Harris拐角检测的python 实现

编辑:

正如您在评论中提到的那样,博客文章中没有介绍产生该算法所需的高斯核的函数。这是Scipy Cookbook中的此类功能的示例(btw的最佳资源):

def gauss_kern(size, sizey=None):
    """ Returns a normalized 2D gauss kernel array for convolutions """
        size = int(size)
        if not sizey:
            sizey = size
        else:
            sizey = int(sizey)
        x, y = mgrid[-size:size+1, -sizey:sizey+1]
        g = exp(-(x**2/float(size)+y**2/float(sizey)))
        return g / g.sum()
收藏
评论

您指出的几何图形是50x50像素。如果几何图形的大小和方向固定的 ,则存在经典的模板匹配问题 ,适合于相关方法 。您可以将匹配的模板应用于原始图像或边界检测输出。

否则,如果大小(比例)和/或方向是任意的,则可以应用傅立叶描述符 。这些描述符是旋转和比例不变。

所有这些方法都可以使用OpenCV,NumPy或SciPy进行编码。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号