2023电赛运动目标与跟踪控制系统图像方案(基于树莓派4B——OPENCV解决方案)

 


前言

笔者今天几乎完成了去年电赛图像识别的部分,如果用opencv的话确实会简单不少,我们只需要识别外矩形框以及内矩形框的8个顶点,还有中心点以及激光点的坐标发送给stm32,基本就已经完成了这个题目视觉的部分,在之前笔者进行了opencv的入门,学习一段时间后做了银行卡号识别的项目才开始真正做这道题的图像,希望我的思路可以帮助到大家。

先展示一下效果

022c67241bc742ff8ce2b4c4d217a40e.png

一、识别黑色电工胶带八个顶点(外边框4个内边框4个)

我们识别这个黑色边框的步骤主要就是以下几个步骤

1.图像灰度化

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

2.Canny边缘检测

先二值化图像随后进行边缘检测

lurred = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(blurred, 30, 60)

3.轮廓检测

我们需要消除图像中由噪声引起的小面积边缘轮廓。

# 轮廓检测
    contours, _ = cv2.findContours(edges, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
    # 去除面积小的轮廓
    filtered_contours = [cnt for cnt in contours if cv2.contourArea(cnt) > 50]  # 可根据实际情况调整阈值

 

4.近似多边形

 rect_contours = []
    for cnt in filtered_contours:
        epsilon = 0.02 * cv2.arcLength(cnt, True)
        approx = cv2.approxPolyDP(cnt, epsilon, True)
        if len(approx) == 4:  # 近似为四边形(可能是矩形)
            rect_contours.append(approx)

    detected_rect_contours = rect_contours  # 保存检测到的矩形轮廓

把近似成矩形的轮廓保留下来,其他的全部舍弃。

5.绘制矩形轮廓

# 绘制矩形轮廓
    for i, rect_contour in enumerate(detected_rect_contours):
        if i == index_to_delete or i == index_to_delete_2:  # 如果是要删除的索引,跳过
            continue
        area = cv2.contourArea(rect_contour)

        if area > 40000:
            cv2.drawContours(frame, [rect_contour], -1, (255, 0, 0), 2)  # 面积大于 40000 用蓝色绘制
        else:
            cv2.drawContours(frame, [rect_contour], -1, (0, 255, 0), 2)  # 其他用绿色绘制

这里笔者把轮廓分成了两部分,一部分是外层的一部分是内层的,通过面积进行区分。

6.找到矩形顶点

人脸追踪系统,使用的上位机为jetson,下位机stm32控制180度的舵机,舵机上有载有usb摄像头【python,c】.zip嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问欢迎随时我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明,项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要嵌入式物联网单片机相关领域开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步。 【本人专注嵌入式领域】: 有任何使用问欢迎随时我联系,我会及时解答,第一时间为你提供帮助,优快云博客端可私信,为你解惑,欢迎交流。 【建议小白】: 在所有嵌入式开发中硬件部分若不会画PCB/路,可选择根据引脚定义将其代替为面包板+杜邦线+外设模块的方式,只需轻松简单连线,下载源码烧录进去便可轻松复刻出一样的项目 【适合场景】: 相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多功能
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值