OpenMV 2022电赛泊车视觉方案

这篇具有很好参考价值的文章主要介绍了OpenMV 2022电赛泊车视觉方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

作者第一次参加电赛,也是第一次接触OpenMV,通过几天的学习完成了对车库以及边线巡线的视觉识别方案,分享出来希望能提供一些思路给其他使用OpenMV的朋友。

效果展示

车库T型连接处识别:

openmv车道线检测,单片机,嵌入式硬件,计算机视觉

巡线的效果忘记截图了,不过代码里有,感兴趣的朋友可以跑一下试试。

识别思路

本项目主要使用了OpenMV提供的find_blobs()函数,具体的使用方法可以查看官方教程。
通过对被场地上黑线分割出来的白色区域进行识别,可以简单有效的识别出车库接缝。首先提取画面中所有的色块,将画面平均分为上下两个部分,以分类上下两种色块。当未到达车库连接处时,画面中仅有一条黑线,画面将被分割为上下两个部分,上下各一块。当画面中出现车库接缝时,将被分割为上面两块,下面一块,通过对上下色块数量的检测,即可简单有效的识别出车库接缝。通过计算经过车库接缝的数量,并使用当前接缝坐标进行校准,即可确认小车当前的准确位置。
巡线部分将画面左侧较窄的部分提取了roi,同时提取黑线色块,并返回其中心坐标供单片机进行闭环,确保在行进过程中与车库距离保持恒定。

完整代码

import sensor, image, time, pyb

# 串口通信
uart = pyb.UART(3,115200,timeout_char = 1000)#串口初始化

threshold1 = (80, 200)#阈值
threshold2 = (0, 40)#阈值

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False) # 关闭增益(色块识别时必须要关)
sensor.set_auto_whitebal(False) # 关闭白平衡
clock = time.clock()#定义时钟对象clock

# 串口输出变量
out_str1 = ''

T_time = 0
real_time = 0
now_T = False

line_roi = (0,50,40,240)


while(True):
    #clock.tick()#返回以毫秒计的通电后的运行时间。
    img = sensor.snapshot().lens_corr(1.5)

    blob_up = []
    blob_down = []
    largest_blob = []

    line_blob=img.find_blobs([threshold2], roi=line_roi, merge=True,pixels_area=50)
    if line_blob:#如果找到了颜色块
       # Find the blob with the most pixels.
       largest_blob.append(max(line_blob, key=lambda b: b.pixels()))
       # 绘制色块边缘会影响到之后的识别,调参结束请注释
       img.draw_rectangle(largest_blob[0].rect())#画矩形框 blob.rect() ---> 返回一个矩形元组(可当作roi区域)
       img.draw_cross(largest_blob[0].cx(), largest_blob[0].cy())#画十字 blob.cx(), blob.cy() --->返回中心点x和y坐标


    #img.find_blobs()查找图像中所有色块,并返回包含每个色块的色块对象列表
    for blob in img.find_blobs([threshold1], pixels_threshold=200, area_threshold=200, merge=True):
    #若一个色块的边界框区域小于 area_threshold ,则会被过滤掉。
    #若一个色块的像素数小于 pixel_threshold ,则会被过滤掉。
    #merge_cb 可设置为用以调用两个即将合并的色块的函数,以禁止或准许合并。
        img.draw_rectangle(blob.rect())#画矩形框 blob.rect() ---> 返回一个矩形元组(可当作roi区域)
        img.draw_cross(blob.cx(), blob.cy())#画十字 blob.cx(), blob.cy() --->返回中心点x和y坐标

        if blob.cy() >120:
            blob_down.append(blob)
        else:
            blob_up.append(blob)

    #检测T
    if len(blob_up) == 2 and len(blob_down) == 1:
        now_T = True
        #print('T')

    else:
        now_T = False

    #判断过了几个T
    if now_T == True:
        real_time+=1 #滤波
        if real_time==5:
            T_time+=1
    else:
        real_time=0

    out_str1 += 's';  # 校验用,可以注释掉
    out_str1 += '%.d' % int(now_T);  # 当前是否有T
    out_str1 += '%.d' % int(T_time);  # T个数
    if largest_blob:
       out_str1 += '%.d' % int(largest_blob[0].cy());  # 与车库距离,用来巡线

    # 发送
    uart.write(out_str1)

    print(now_T)
    print(out_str1);

    # 串口数组清零
    out_str1 = ''    # 清除之前的数据

    #print(clock.fps())#clock.fps() ---> 停止追踪运行时间,并返回当前FPS(必须先调用tick)。

如果文章有帮助到你,请给我点个赞,谢谢!文章来源地址https://www.toymoban.com/news/detail-541224.html

到了这里,关于OpenMV 2022电赛泊车视觉方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【手拉手 带你准备电赛】单色块识别(基于openmv)

    目录 文章背景 openmv介绍 openmv色块识别原理 openmv色块识别代码 最终结果 疑惑细解: 关于阈值的设置: 关于自动增益和白平衡         我们都听说过什么图像识别、色块识别,并且在2021年电赛——智能送药小车中也使用到了相关技术,那么你知道相关的原理和实现方法

    2024年02月11日
    浏览(37)
  • 电赛智能送药小车_OpenMV巡线&识别十字路口完整代码

      整体思路 :通过划分ROI区域分区进行识别,中央 ROI 区域为巡线,左右两侧的 ROI_L 和 ROI_R 为十字路口识别 . 主程序如下 : # 本文代码中所导入的pid.py就是OpenMV官网上例程的代码 需要完整源码请私信我。

    2024年02月12日
    浏览(58)
  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV

    如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (1)已经有不少同学根据我上一篇博客完成了前三问,恭喜恭喜。有很多同学卡在了第四问。 (2)我

    2024年02月14日
    浏览(38)
  • openmv传承(二):色块检测

    这个色块检测真的没什么可以说的,非常简单烧一下例程,改一下阈值就可以使用 获取所需要修改的阈值  四、主要函数讲解 通过find_blobs函数可以找到色块。 thresholds是颜色的阈值,注意:这个参数是一个列表,可以包含多个颜色。如果你只需要一个颜色,那么在这个列表

    2024年02月13日
    浏览(54)
  • openmv学习十一:边缘检测

    代码:  效果  

    2024年02月12日
    浏览(42)
  • 毕业设计 单片机与OpenMV机器视觉目标跟踪系统

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月03日
    浏览(52)
  • OPENMV上的目标检测,目标定位模型

    代码地址 在17届省赛结束后,因为担心国赛场地光照影响较大,写了这个目标检测算法。但因为时间以及实力不足,算法仅有了个雏形,没能成功部署,非常遗憾。 今年寒假终于有时间将其完善,也算对自己的锻炼。正好在18届的比赛中有无边框图片,发现该算法在无边框定

    2024年02月05日
    浏览(42)
  • Openmv通过IMPULSE训练模型实现目标检测

    openmv4plus可以进行神经网络学习,实现目标检测,之前学习过了K210的目标检测,以及机器学习进行目标检测。今天就用openmv4plus进行目标检测。 在学习之前已经做了很多了解,openmv真的很方便做目标检测。 网址:IMPULSE网址 新建一个文件夹用于存储数据集 新建文件夹输入类别

    2024年02月16日
    浏览(40)
  • Openmv+STM32F103C8T6视觉巡线小车

    机器视觉巡线处理是参考openmv官方代码 Openmv官网源代码:book. openmv.cc/project/follow-lines.html 根据官网视频及教程将源码注入openmv中。 小车巡的是黑线,所以颜色阈值要更改。 在文件示例中打开helloworld.py。 打开工具/机器视觉/阈值编辑器/缓冲区。 将我们需要寻迹的黑线调至全

    2023年04月09日
    浏览(58)
  • 通过云端自动生成openmv的神经网络模型,进行目标检测

    1.OpenMV4 Plus(低版本的openmv可能算力不够不支持) 2.一根micro usb的数据线 3.电脑、网络 在openMV官网下载openmv IDEhttps://book.openmv.cc/ 下载完毕后进入IDE界面: 1.首先在D盘里创建一个新的文件夹,用来放置一会要存放的数据集: 这里我创建的数据集名为new data 2.打开openmv的IDE,点

    2024年02月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包