K210实现单目测算距离—以21年电赛F题为例

这篇具有很好参考价值的文章主要介绍了K210实现单目测算距离—以21年电赛F题为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

K210实现单目测算距离—以21年电赛F题为例

单目测距在无人驾驶,路径规划中的地位越来越重要,比激光雷达和深度相机的成本更低,更适合于项目的开发。

原理

单目测算距离的原理就是初中物理上学的小孔成像原理,但是由于我们不知道高度,所以会造成深度丢失。所以我们第一步就是测量我们要测量物体的真实宽度和镜头的焦距。
镜头测算焦距,我们需要对着标定板拍照,然后将拍好的照片导入到Matlab中,计算出焦距。大家在初中学过相距和焦距之间的关系,相距应该在一倍焦距以内,因为焦距比较小,所以我们就将相距等于一倍焦距,这样误差也会很小。
k210测距,opencv,算法,计算机视觉,opencv,python

程序

list(i.rect())

这个函数可以返回出所检测到目标画框出来的x,y坐标。
k210测距,opencv,算法,计算机视觉,opencv,python
通过这个函数我们就可以得到图像的宽度

b=(int(list1[0])-int(list1[2]))

有可能它们相减得到的数据为负数,但现实生活中不可能存在负数,所以我们取绝对值。

if b<0:
                b=-b

其次我们只需要将像素宽度转化为实际宽度,我们k210采用的分辨率是22*224,感光元件为4,所以实际宽度为4/224×b

width_img=(4/224)*int(b)
L=int(width_True*0.75)/width_img/100  #物体实际的宽度

这样我们就可以算出大致的距离了,误差不会很大。

k210测距,opencv,算法,计算机视觉,opencv,python
实测误差在3cm左右,这个误差个人觉得还是可以接受的。文章来源地址https://www.toymoban.com/news/detail-633234.html

完整代码

import sensor,image,lcd,time
import KPU as kpu
from machine import UART
from fpioa_manager import fm
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0)
sensor.run(1)
width_img=1
width_True=20
L=0
task = kpu.load("/sd/yolov3.kmodel")
f=open("anchors.txt","r")
anchor_txt=f.read()
L=[]
for i in anchor_txt.split(","):
    L.append(float(i))
anchor=tuple(L)
f.close()
f=open("lable.txt","r")
lable_txt=f.read()
lable = lable_txt.split(",")
f.close()
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(11, fm.fpioa.UART1_RX, force=True)
uart_A = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
anchor = (0.3691, 0.2575, 0.4528, 0.4739, 0.6996, 0.5839, 0.9164, 0.9705, 2.3887, 1.7223)
sensor.set_windowing((224, 224))
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
classes=["9","1","4","2","3","8","5","6","7" ]
while(True):
     img = sensor.snapshot()
     code = kpu.run_yolo2(task, img)
     if code:
         for i in code:
             a=img.draw_rectangle(i.rect())
             a = lcd.display(img)
             list1=list(i.rect())
             b=(int(list1[0])-int(list1[2]))
             if b<0:
                b=-b
             c=(list1[1]+list1[3])/2
             width_img=(4/224)*int(b)
             if width_img==0:
                width_img=1
             L=int(width_True*0.75)/width_img/100
             #print("物体是:",classes[i.classid()])
             #print("概率为:",100.00*i.value())
             #print("坐标为:",b,c)
             print("距离:",b)
             for i in code:
                 lcd.draw_string(i.x(), i.y(), '%f'%L, lcd.RED, lcd.WHITE)
                 #lcd.draw_string(i.x(), i.y()+12, '%f'%i.value(), lcd.RED, lcd.WHITE)
                 #lcd.draw_string(50, 200,str(b), lcd.RED, lcd.WHITE)
                 #lcd.draw_string(110, 200,str(c), lcd.RED, lcd.WHITE)
                 uart_A.write(classes[i.classid()]+'\r\n')
                 uart_A.write(str(b)+'\r\n')
                 uart_A.write(str(c)+'\r\n')
     else:
         a = lcd.display(img)
uart_A.deinit()
del uart_A
a = kpu.deinit(task)

到了这里,关于K210实现单目测算距离—以21年电赛F题为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 21年电赛无人机G题思路

    21年电赛结束了,我们选择的题目是无人机G题。通过题目也能感受到今年的难度,在这里旨在为大家提供一个G题的解题思路和方案。 读完题目,可以发现主要有两个难题需要解决 1.飞行路径问题(如何确保飞行能覆盖全部播撒区域) 2.视觉识别问题(如何识别到条形码和入

    2024年02月15日
    浏览(40)
  • 电赛备赛日记(一):K210与STM32串口通信

       拖更了n久的备赛日记终于来啦,最近实现了关于K210图像识别并将所需数据(即目标类别,目标在图像中的加权坐标)其中,加权坐标指K210识别到的目标并框出的框的宽和高与框左上顶点的坐标加权,希望以此来判断目标所处的位置并方便后续进行诸如寻迹,目标跟随等

    2024年02月04日
    浏览(60)
  • 分享21年电赛F题-智能送药小车-做题记录以及经验分享

    自己是今年准备电赛的同学一名,电赛结束了,想把自己之前刷过的题目,通过这篇文章,来分享一波做这道题的思路和调试方法 自己在做之前的电赛题目时,也苦苦没有思路,不知道该怎么去下手,面对题目的要求和限制,应该如何去分析和实现 由于我们主要是准备小车

    2024年02月13日
    浏览(37)
  • 21年电赛F 题jetson nano+32F4识别数字(附源码和数据集)

    目录 前言 一、Opencv采集数字图像 二、标记图像数字位置 三、yolov4-tiny机器学习训练 四、jetson nano识别数字 五、识别效果 单个数字识别  ​​​ 两个数字识别  四个数字识别 命令行结果显示 小车OLED屏幕显示 总结+数据集权重文件+小车程序 前言 啊!四天三夜的电赛终于结

    2024年02月14日
    浏览(36)
  • 【2023年电赛】运动目标控制与自动追踪系统(E 题)最简单实现

    本方案的思路是最简单的不涉及复杂算法:识别矩形框,标记矩形框,输出坐标和中心点,计算长度,控制舵机移动固定长度!仅供完成基础功能参考,不喜勿喷! # 实现运动目标控制与自动追踪系统 ## 任务概述 本文将介绍如何使用OpenMV开发板和舵机构建一个运动目标控制

    2024年02月14日
    浏览(36)
  • k210实现麦克风阵列声源定位

    import sensor import image import lcd import time import KPU as kpu from fpioa_manager import * from Maix import GPIO # 设置麦克风阵列 fm.register(board_info.MIC_ARRAY_DATA, fm.fpioa.I2S0_IN_D0, force=True) fm.register(board_info.MIC_ARRAY_WS, fm.fpioa.I2S0_WS, force=True) fm.register(board_info.MIC_ARRAY_BCK, fm.fpioa.I2S0_SCLK, force=True) # 初始化

    2024年02月14日
    浏览(40)
  • 【电赛训练】非接触物体尺寸形态测量 2020年电赛G题

    一、题目要求 具体内容详见非接触物体尺寸形态测量(G 题)——行走的皮卡丘 设计并制作一个非接触式物体形状和尺寸自动测量装置,装置的布置图如图 1所示,测量装置放置在图中所示的测量装置区内,被测目标放置在图中被测目标放置区内,装置能测量被测目标的形状

    2024年02月16日
    浏览(54)
  • 【2023年电赛国一必备】E题报告模板--可直接使用

    通过百度网盘分享的文件:https://pan.baidu.com/s/1aXzYwLMLx_b59abvplUiYw?pwd=dn71  提取码:dn71 复制这段内容打开「百度网盘APP 即可获取」 图1 任务内容  图2 基本要求内容  图3 发挥部分内容    图4 说明内容   图5 评分内容         本文使用K210芯片设计了一个运动目标控制与自

    2024年02月14日
    浏览(37)
  • 2019年电赛D题《简易电路特性测试仪》全过程

    本人为团队中负责硬件部分,为了准备2022年电赛,本队伍已经制作2019年和2021年电赛信号题,本次主要讲解为2019年电赛D题硬件部分,少部分为软件需要做的部分。后续会对整个硬件进行优化和整理。   题目的硬件所确定的部分为一个分压式放大电路,其中利用的9013 npn来进

    2023年04月08日
    浏览(42)
  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenMV方案

    如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (1)废话少说,很多人可能无法访问GitHub,所以我直接贴出可能要用的代码。 此博客还会进行更新,

    2024年02月14日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包