效果展示:
出错解决方法
openmv数字识别源代码–gitee

通过使用不同阈值的方法可以得到当前区域中什么区域有红线,对于电控而言作用类似于红外对管,之后电控通过逻辑判断如何运动,这就是我们队伍目前的思想。最后会不会用上还不确定。

同时,如果你的题目是白底黑线,那么建议使用二值化的方法。
这种方法对于只有黑白两色的识别精度会更高。
当然你也可以直接修改成黑色阈值,这个需要自己去调整

如果对代码有不了解,可以点击上方的gitee连接来向我询问

代码大致思路为选出五个roi区域,然后进行二值化或者阈值设定,将某种颜色的设定为1,另外的颜色设置为0,那么当openmv识别到的是特定的颜色的时候,就会返回1,这就类似于红外对管,红外对管遇到黑线和白线也会返回不同的值,这就是本套代码的思路。
之后通过位移运算以及串口便可以发送对应的框中此时的数值了,从而起到红外对管的作用。
如果对你有帮助就点个赞吧

import pyb, sensor, image, math, time
from pyb import UART
import ustruct
from image import SEARCH_EX, SEARCH_DS
#传感器配置sensor.set_contrast(1)
sensor.set_gainceiling(16)
#可以通过设置窗口来减少搜索的图像
#sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))
#加载模板
#模板应该是一个小的灰度图像,如32×32.clock = time.clock()
#-----------------------以下是巡线部分-----------------------------
# qq460219753
uart = UART(3,115200,bits=8, parity=None, stop=1, timeout_char = 1000)#led = pyb.LED(3)
roi1 =     [(0, 40, 20, 40),        #  左  x y w h(35, 40, 20, 40),       #  中(70,40,10,10),(105,40,20,40),(140,40,20,40)]         # 右
#160 120
sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565.
sensor.set_framesize(sensor.QQVGA)#160x120
sensor.skip_frames(time=2000) # 跳过10帧,使新设置生效
sensor.set_auto_whitebal(True) # turn this off.
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_vflip(False)# 垂直方向翻转
sensor.set_hmirror(False)# 水平方向翻转
clock = time.clock()#low_threshold = (0, 100)  # 105--115
#GRAYSCALE_THRESHOLD = [(20,100)]
#思路 现在需要除红线外全是黑色,红线为白
GROUND_THRESHOLD=(59, 25, 127, 19, -128, 89)
def sending_data(data):global uart;data = ustruct.pack("<bbb",      #格式为俩个字符俩个短整型(2字节)0xA5,                      #帧头10xA6,data)        #数组大小为7,其中2,3,4,5为有效数据,0,1,6为帧头帧尾uart.write(data);   #必须要传入一个字节数组#print("head",data[0],"status",data[1],"tail",data[2])print(data[2])
getp=0
#GRAYSCALE_THRESHOLD =(59, 25, 127, 19, -128, 89)
GROUND_THRESHOLD1=(78, 24, 127, 18, -28, 59)
#GRAYSCALE_THRESHOLD =(100, 33, 114, 22, 11, 127)#(100, 33, 127, 28, -4, 127)#(100, 30, 127, 17, -37, 127)
while(True):data=0blob1=Noneblob2=Noneblob3=Noneblob4=Noneblob5=Noneflag = [0,0,0,0,0]img = sensor.snapshot().lens_corr(strength = 1.7 , zoom = 1.0)#畸变矫正#img.binary([low_threshold],invert = 1)#设置最低阈值 反转#img = sensor.snapshot().binary([GROUND_THRESHOLD])blob1 = img.find_blobs([GROUND_THRESHOLD1], roi=roi1[0]) #leftblob2 = img.find_blobs([GROUND_THRESHOLD1], roi=roi1[1]) #middleblob3 = img.find_blobs([GROUND_THRESHOLD], roi=roi1[2])blob4 = img.find_blobs([GROUND_THRESHOLD1], roi=roi1[3])blob5 = img.find_blobs([GROUND_THRESHOLD1], roi=roi1[4])if blob1:flag[0] = 1  #左边检测到红线if blob2:flag[1] = 1  #中间检测到红线if blob3:flag[2] = 1  #右边检测到红线if blob4:flag[3] = 1  #中间检测到红线if blob5:flag[4] = 1  #右边检测到红线print(flag[0],flag[1],flag[2],flag[3],flag[4])for i in (0,1,2,3,4): # 0 1 2 3 4data|=(flag[i]<<(4-i))sending_data(data)for rec in roi1:img.draw_rectangle(rec, color=(255,0,0))#绘制出roi区域

2021电赛F题之openmv巡线(附代码)相关推荐

  1. 2021电赛F题之openmv数字识别--更新(附带视频与代码)

    成果展示 常见出错解决方法 openmv数字识别源代码-gitee 效果如上 openmv的u盘里需要 思路: 模板匹配很简单,只不过使用起来需要自己拍摄大量的模板,同时如果模板数量较多那么就会造成严 ...

  2. 2021电赛F题视觉教程+代码免费开源

    2021电赛F题视觉教程+代码免费开源 最近好多要电赛题的源码,其他csdn营销号下载都需要会员或钱,正好最近课设又要做一遍电赛小车题,哥们先把代码开源了,饿死营销号 电赛宝藏链接: 四天三夜,那布满 ...

  3. 2021电赛F题(智能送药小车)参赛总结【视觉部分】

    2021电赛F题(智能送药小车)参赛总结[视觉部分] 前言 在2021年全国大学生电子设计竞赛中,我们小组做的是F题(智能送药小车).我在小组中主要负责小车视觉功能的实现,所以在本篇参赛总结中只会涉及 ...

  4. 2021电赛F题-智能送药小车-国一

    2021电赛F题-智能送药小车-国一 B站视频链接:https://www.bilibili.com/video/BV1u44y1e7qk/ (这大概是b站第一个双车视频吧,嘿嘿

  5. 2021电赛F题智能送药小车方案分析(openMV数字识别,红线循迹,STM32HAL库freeRTOS,串级PID快速学习,小车自动返回)

    2021全国大学生电子设计竞赛F题智能送药小车 前提:本篇文章重在分享自己的心得与感悟,我们把最重要的部分,摄像头循迹,摄像头数字识别问题都解决了,有两种方案一种是openARTmini摄像头进行数字 ...

  6. 2020电赛F题回顾——简易无接触温度测量与身份识别装置

    2020电赛F题回顾--简易无接触温度测量与身份识别装置 第一次参加电赛,已经大三了,这也有可能是我的最后一次,不禁感慨时间过得真快.在实验室一起奋斗的夜晚既辛苦又幸福,感谢陪伴在我身边一起做电赛的同 ...

  7. 2021美赛F题解题思路

    新队伍,大家都差不多是小白,借鉴的博客:(19条消息) 2021年美赛F题总结_wzu_cza123的博客-CSDN博客_美赛2021f题 一.数据的查找和处理 二.TOPSIS 1.TOPSIS熵权 ...

  8. 视觉识别数字、十字路口和T字路口,巡线于一体的基于openmv的解决方案(2021年电赛f题)

    普通二本生(大二)没获奖,因为驱动方面和视觉协同问题没有做好(驱动方面跑太快,速度降不下来)只跑了最初级的,这个文章就是去记录一下我的成长过程吧. 目录 1.使用神经网络来进行识别 2.使用模板匹配来 ...

  9. python利用tensorflow识别圆_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记

    今年的电赛题目非常反常,传统控制题目基本没有,新增加了测距题目,甚至物联网题目,Ai题目都出来了.直接电赛变算法+钞能力大赛.看到F题:测温+人脸识别,碰巧我们手头有调好的红外测温模块+树莓派+ope ...

最新文章

  1. R语言setdiff函数集合作差运算实战
  2. 常用jar包之commons-beanutils使用
  3. ora00600内部错误代码oracle,ORA-00600: 内部错误代码, 参数: [13013]
  4. powerdns mysql_安装PowerDNS(使用MySQL后端)和Poweradmin在Debian Lenny
  5. css 两行字变成一行,如何通过CSS将两行文本更改为一行?
  6. SAP License:SAP实施项目中顾问与客户的有效沟通
  7. IBM V3500存储更换控制器一例
  8. java用户邮件激活
  9. Atom: 几个常用的快捷键,恢复主菜单
  10. ubuntu下安装matlab及配置vot-toolkit
  11. matlab 矩阵 对称,如何使用Matlab产生对称矩阵 | 学步园
  12. 《Git 教程 - 廖雪峰》
  13. JAVA外卖订餐系统毕业设计 开题报告
  14. 怎么查看笔记本内存条型号_内存条,图文告诉您怎么查看内存条的型号
  15. SAP中财务账期和物料账期系统内表
  16. M7206手动进行双面打印步骤
  17. XStream使用教程
  18. android自动拨号 代码,在Android上,是否有一种方法可以强行自动自动拨号?_android_开发99编程知识库...
  19. 【芯片识别】基于matlab GUI形态学PCB板芯片识别【含Matlab源码 1820期】
  20. Hankson趣味题

热门文章

  1. JDK下载需要登录账号?解决方法
  2. Coderforces 字符串水题合集
  3. 读书笔记-淘宝十年产品事
  4. ZOJ 1425 Crossed Matchings DP LCS
  5. PowerDesigner16 状态图
  6. Android - 安装应用(APP) 不显示图标
  7. 【云原生】K8S--负载均衡详细介绍;什么是K8S的负载均衡?
  8. java ffmpeg 合并视频_android ffmpeg视频剪切与合并
  9. outlook 回复邮件的邮件头使用RE而不是回复
  10. android 屏幕dp值计算