基于Openmv图形与颜色识别。(起重机大赛)<第一章:简单介绍>

OpenMV项目创造一款低价,可扩展,支持Python的机器视觉模块,在很多视觉领域都有涉及应用。在参加起重机大赛中,负责图像处理部分,最为新手接触Openmv,通过多方学习,了解,探索到了一种相对比较有效、快速的分辨识别圆形,三角,矩形等色块的办法,在此分享给大家。


1、Openmv是什么?

简单的来说,它是一个可编程的摄像头,通过MicroPython语言,可以实现你的逻辑。而且摄像头本身内置了一些图像处理算法,很容易使用。

OpenMV搭载MicroPython解释器,这允许你在嵌入式上使用Python来编程 (Python 3 to be precise). Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。 使用python遍历每一个色块,就可以获取他们所有信息,而这些,只需要两行代码!

并且,你可以使用OpenMV专用的IDE,它有自动提示,代码高亮,而且有一个图像窗口可以直接看到摄像头的图像,有终端可以debug,还有一个包含图像信息的直方图!

 2、Openmv适合什么人?

对嵌入式机器视觉感兴趣的人。

对OpenMV感兴趣,并想在项目里使用OpenMV的人。

对计算机视觉感兴趣的人,通过OpenMV,可以做出一些好玩的项目,激发学习计算机视觉的兴趣,而不会卡在傅立叶变化,小波变换,滤波之类的事情上。

3、比赛要求。

比赛要求识别不同颜色的图形,分别为:红色三角形、蓝色圆形、红色圆形、蓝色圆形、红色矩形、蓝色矩形。并按照相关要求抓取,并放置在指定区域。

4、我的方法。

我用的方法是,先用寻找blob色块的方式,找到红色或者蓝色的色块。

for blob in img.find_blobs(thresholds , pixels_threshold=200  , area_threshold=200):

然后对找到的色块进行密度比计算,不同的密度比对应不同的图形:

for blob in img.find_blobs(thresholds , pixels_threshold=200 , area_threshold=200):
    if 0.40 < blob.density() < 0.65:
       print("三角形")
    if 0.65 < blob.density() < 0.80:
       print("圆形")
    if 0.8 < blob.density() :
       print("矩形")

最后在色块区域进行像素统计,识别不同的颜色:

statistics = img.get_statistics(thresholds)
statistics = img.get_statistics(thresholds)

你可能感兴趣的:(stm32,python)