实现色块扫描、返回最大色块的中心位置,相对距离,颜色数据。

从图像返回的参考坐标系变换到二维笛卡尔坐标系:

Blob_X = (MVData[3]<<8)+MVData[4];
Blob_Y = (MVData[5]<<8)+MVData[6];
Blob_X = Blob_X-160;//变换到二维平面坐标系
Blob_Y = 120-Blob_Y;

'''
颜色追踪信令包
0&1、包头0xAA、0xAF
2、颜色标志位-->0:无、1:红色、2黄色
3-6-->色块位置数据
3、x轴高位
4、x轴低位
5、y轴高位
6、y轴低位
7、相对于二维平面原点的距离
'''
import sensor, image, time, math
from pyb import UART
uart = UART(3,9600)
thresholds_yellow = (50, 90, -32, 23, 20, 64)#黄色色块LAB阈值
#thresholds_blue = (46, 95, -34, 19, -45, -11)
thresholds_red  = (41, 73, 46, 94, 1, 77)class clo_blob():flag = 0    #0无1红2蓝#最大色块中心坐标position_x_H = 0            #x高八位position_x_L = 0            #x低八位position_y_H = 0            #y高八位position_y_L = 0            #y低八位Distance = 0                #相对于(160,120)的距离def Print_Blob(obj,flag):tem.flag = flag#色块中心坐标分解传输tem.position_x_H = obj.cx()>>8tem.position_x_L = obj.cx()tem.position_y_H = obj.cy()>>8tem.position_y_L = obj.cy()tem.Distance = int(math.sqrt(math.pow(obj.cx()-160,2) + math.pow(obj.cy()-120,2)))#print(tem.Distance)#print("X:{}  Y:{}".format(obj.cx()-160,120-obj.cy()))Data_Print = bytearray([0xAA,0xAF,tem.flag,tem.position_x_H,tem.position_x_L,tem.position_y_H,tem.position_y_L,tem.Distance])return Data_Printsensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False)
sensor.set_auto_whitebal(False)
clock = time.clock()
_roi = [0,0,320,240]#完整屏幕tem = clo_blob()
Zero_return = bytearray([0xAA,0xAF,0x00,0x00,0x00,0x00,0x00,0x00,0x00])#未发现色块返回此数组
count = 0
flag_send = 0
while(True):clock.tick()img = sensor.snapshot()count = 0flag_send = 0for blob in img.find_blobs([thresholds_yellow], pixels_threshold=200, area_threshold=200, merge=True,roi=_roi):#筛选出最大黄色色块if count == 0:Max_blob = blobcount += 1elif blob.pixels() > Max_blob.pixels():Max_blob = blob#标定输出黄色色块信息if count != 0:img.draw_edges(Max_blob.min_corners(), color=(0,0,0))img.draw_line(Max_blob.major_axis_line(), color=(0,0,0))img.draw_line(Max_blob.minor_axis_line(), color=(0,0,0))uart.write(Print_Blob(Max_blob,2))#print("yellow:",Max_blob)count = 0flag_send = 1for blob in img.find_blobs([thresholds_red], pixels_threshold=200, area_threshold=200, merge=True,roi=_roi):#筛选出最大红色色块if count == 0:Max_blob = blobcount += 1elif blob.pixels() > Max_blob.pixels():Max_blob = blob#标定输出红色色块信息if count != 0:img.draw_edges(Max_blob.min_corners(), color=(0,0,0))img.draw_line(Max_blob.major_axis_line(), color=(0,0,0))img.draw_line(Max_blob.minor_axis_line(), color=(0,0,0))uart.write(Print_Blob(Max_blob,1))#print("red:",Max_blob)count = 0flag_send = 1if flag_send == 0:uart.write(Zero_return)

【openMV】色块追踪相关推荐

  1. openmv学习之旅②之色块追踪算法的改善

    大家好,我是杰杰. 实在不好意思,最近比较忙,之前说的连载现在才更新出来. 从上一篇openmv的学习中openmv学习之旅① 我们可以很简单运用micropython在openmv上做我们想做的事情 ...

  2. STM32识别圆——色块追踪法

    前言 识别圆采用OpenCV来做比较简单,可以用HoughCircles函数,但是如何在内存和资源都很紧张的STM32上面实现圆识别算法,是本文的写作目的.本文的算法采用Python实现,不采用库函数 ...

  3. OpenMV色块寻找

    OpenMV入门,从入门到入坟>_< 此文章大部分内容取自OpenMV官方中文参考文档 详情看OpenMV官方中文参考文档 文章目录 一.sensor.snapshot()拍一张照片 二. ...

  4. 对openmv色块查找的思考笔记

    引言 要实现色块查找,首先我们是在RGB格式下对红,黄蓝三原色的值域进行规定,例如:red = (minL, maxL, minA, maxA, minB, maxB) 通常我们在程序中使用thres ...

  5. 【感兴区roi学习应用】OpenMv如何只识别左边屏幕里面的红色小球

    思路应该就是给他一个区域,然后在区域里面找红色小球 拉到最后看结果,前面目前是死路-- 那么找小球代码 官网:http://book.openmv.cc/quick-starter.html impo ...

  6. 匿名飞控openmv寻色块代码分析

    本人最近一段时间在学习匿名飞控(使用的是匿名拓空者),也去网上看了很多资料和一些大佬的见解,学到了一些东西,所以想和大家一起学习讨论一下,互帮互助,共同进步.同时也是为了方便查找,防止遗忘.若是我有什 ...

  7. openmv一些常见问题与心得总结

    提示:本程序测试主控为open mv4 H7,开发平台为openmv IDE openmv一些常见小问题与阶段性心得总结 前言 一.谨慎使用画图画线功能 a.画图画线也会影响图像识别效果 b.实际效果 ...

  8. stm32智能小车设计(1)——硬件选型思路

    目录 硬件整体逻辑 主控: 底盘: 电机 L298n电机驱动: 供电: 外设功能: 电机测速: 循迹功能(走s线,绕弯) 避障功能: 蓝牙遥控: 高级功能: 小车信息的获取及显示: 物体跟随,色块追踪 ...

  9. 欢迎进入杰杰的博客导航一站式搜索(所有博客的汇总帖)

    网络的好朋友,你好,我是杰杰!如果我的博客有什么不足的地方,欢迎向我反馈:如果我的博客对你有帮助,那是我的荣幸!如果觉得文章很好,欢迎动动小手指,点个赞或者转发 -----杰杰. 欢迎关注我个人微信公 ...

最新文章

  1. 使用 YOLO 进行目标检测
  2. vscode输入vue自动_vscode配置总结可收藏/vscode用户设置大全/vue代码模板,vscodevue...
  3. jQuery加载一个html页面到指定的div里
  4. 数据挖掘具体技术——分类
  5. 角谷定理python输出变化过程_日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容...
  6. 2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人
  7. 深入理解softmax函数
  8. 2018-2019-1 20165325 《信息安全系统设计基础》第七周学习总结
  9. JavaScript 属性介绍
  10. matlab imagesc参数设置,[转载]matlab 中imagesc的用法
  11. css3 transition 和 animation实现走马灯
  12. 教您用事务一次处理多条SQL语句
  13. IOS图像拉伸解决方案
  14. mysql大于等于怎么写_MySQL 对于千万级的大表要怎么优化?我写了6000字的深度解读...
  15. MPLS virtual private network OptionA实验(华为设备)
  16. Git(8):在GitHub上,如何使fork到的项目与原仓库的更新保持同步?
  17. 8款受欢迎的代码编辑器,你值得拥有!
  18. matlab 频数分布直方图_matlab 统计直方图
  19. [GIS教程] 7 空间数据查询与空间度量
  20. 电脑连上网却无法使用浏览器,显示远程计算机或设备将不接受连接的解决办法

热门文章

  1. 安装deepin_deepin使用笔记,安装steam客户端
  2. Bash脚本删除相对路径下小于指定大小的文件
  3. Python更新数据库,解决转译字符与TypeError: XX format: a number is required, not str报错
  4. shell编程快捷方法
  5. WPF TreeView 相关技巧
  6. SVN服务的部署及使用
  7. wget命令3(转载)
  8. 小程序--计算正负数个数
  9. SizeClass和Autolayout
  10. java 蓝桥杯历届试题 回文数字(题解)