0

作为项目的一部分,我正在使用 AForge.Net 库来做一些基本的图像处理工作。我发现识别图像中的单个几何形状(如正方形、圆形等)很简单。但是,当我有类似的图像时 图片 ,程序只能识别外圈。我希望它被识别为一个圆圈和一条线。

类似地,另一个例子是, 图像1 程序只识别一个正方形,但我需要它来识别它是一个正方形和一个圆形。

我猜这个库本身已经过时并且不再受支持,但我将非常感谢一些帮助!我发现这是一个非常容易使用的库,但是如果我的要求不能满足它,我也对其他库开放。(在 Java、C# 或 Python 中)。谢谢!

4

1 回答 1

1

这是一项简单的任务,Python
您需要安装 和 之类的库numpyscipy.ndimage并且只有scipy.ndimage您可以提取黑色背景上的任何形状。
因此,如果您的图像是白色背景,您需要先将其反转,这很容易。

import scipy.ndimage  
from scipy.misc import imread           # so I can read the image as a numpy array

img=imread('image.png')        # I assume your image is a grayscale image with a black bg.  
labeled,y=scipy.ndimage.label(img)   # this will label all connected areas(shapes).  
                                         #y returns how many shapes??  

shapes=scipy.ndimage.find_objects(labeled)         
# shapes returns indexing slices for ever shape  
# So if you have 2 shapes in your image,then y=2.
# to extract the 1st shape you do like this.  
first_shape=img[shapes[0]]          # that's is a numpy feature if you are familiar with numpy .
second_shape=img[shapes[1]]  

提取出您的个人形状后,您实际上可以做一些数学工作来确定它是什么?(例如循环比>>你可以谷歌它,它对你的情况有帮助)

于 2012-10-23T19:57:07.617 回答