我正在使用AForge.Net库来做一些基本的图像处理工作,作为项目的一部分。我发现在图像中识别单个几何形状(如方形,圆形等)是微不足道的。但是,当我有一个像这样的图像 ,程序只能识别外圈。我希望它被认为是一个圆圈和一条线。
同样的另一个例子是, ,程序只识别一个正方形,但我需要它将其识别为正方形和圆形。
我猜这个库本身已经过时且不再受支持,但我真的很感激一些帮助!我发现这是一个非常容易使用的库,但如果我的要求无法满足,我也会对其他库开放。 (在Java,C#或Python中)。谢谢!
答案 0 :(得分:1)
使用Python
执行这是一项简单的任务
您需要安装numpy
和scipy.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]]
在提取各个形状之后,您实际上可以做一些数学工作来识别它是什么?(例如圆度比>>您可以谷歌它,它对您的情况有帮助)