python图像识别

2024-04-29 05:48:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

有联系吗?有什么线索吗?有原料药吗?泰克斯:)


Tags: 图像应用程序图形像素图像识别原料药背景三角形
3条回答

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

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

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

OpenCV有blob分析工具,它将为您提供有关形状的度量,您可以为您喜爱的模式识别算法提供这些形状:)例如,当圆的比率约为0.78时,矩形的面积/(高度*宽度)的比率为1.0。

典型的python工具链是:

至于区分形状,我会通过观察背景的形状来获得它的轮廓。然后,我将使用corner detection算法(例如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()

相关问题 更多 >