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

2023-05-16

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

最近好多要电赛题的源码,其他csdn营销号下载都需要会员或钱,正好最近课设又要做一遍电赛小车题,哥们先把代码开源了,饿死营销号

电赛宝藏链接:

四天三夜,那布满着未知与紧迫感的气息让荷尔蒙无比兴奋,挑战着脑力与体力的极限!
2021全国大学生电子设计竞赛F题参赛简记

2021年小车题完整代码及教程!
2021电赛F题视觉教程+代码免费开源

其他年份的经典题目的源码都在这里啦!
【电赛源码合集】19电磁炮.zip、17板球.zip、15风力摆.zip、13倒立摆.zip、全国大学生电子设计竞赛历年真题(1994-2021).zip

参加电赛必看的经验贴!
全国电子设计竞赛指导 (老学长挥泪经验之谈)

论文模板及评分标准!
全国大学生电子设计竞赛论文写作模板及评分标准

正文开始咯:
视觉的一个任务是视觉上位机模块识别数字并进行滤波和判断处理,传指令给下位机;另一个任务是红线循迹。

不多bb,先上代码和效果图~

  • 链接:GitHub——2021电赛F题所有程序

  • 链接:GitHub——K210数字识别模型文件及主程序

  • 链接:GitHub——openmv循迹主程序分享

  • 链接:百度网盘——小车主板pcb文件
    提取码:3n50
    –来自百度网盘超级会员V3的分享

  • README:蓝牙连接后,发送字符 " t " 给小车进入测试程序

K210数字识别效果:(我媛哥的手真好看)
请添加图片描述

openmv红线循迹效果:
请添加图片描述

小车整体图:
请添加图片描述

请添加图片描述

硬件工具:K210、openmv

软件工具:Maixpy IDE、OpenMV IDE

IDE可到官网下载:

https://www.sipeed.com/index.html

https://singtown.com/openmv/
请添加图片描述

文章目录

  • 2021电赛F题视觉教程+代码免费开源
    • 1. K210数字识别、滤噪、判断
      • 1.1 功能难点及对应函数实现分析
      • 1.2 YOLOV5神经网络模型训练
      • 1.3 K210操作步骤
        • 1.3.1 下载K210的IDE
        • 1.3.2 烧入最新固件库
        • 1.3.3 将文件放入TF卡中
        • 1.3.4 IED中查看效果
        • 1.3.5 通过串口调试助手测试指令通信
      • 1.4 上代码含详细注释
    • 2. OPENMV红线循迹

1. K210数字识别、滤噪、判断

正常操作是上位机是识别,给下位机传数据,处理放到下位机;假如你有个坑比队友,处理还是放上位机干吧;

经过算法优化,现在几乎不存在掉帧。

1.1 功能难点及对应函数实现分析

请添加图片描述

1、在小车行驶过程中,会存在数字不能完全进入视野中情况等存在有很多帧误识情况,要进行滤噪处理

2、每一帧要做处理的同时每个目标值的矩形框进行处理,每个目标值的矩形框还要进行滤波

3、在上位机上不断的优化算法,减少掉帧

4、在Maixpy IDE中python 的numpy、pandas巴拉巴拉包都调不了

5、图中最多出现四个,但这里设了读六个矩形框,留两个容错,不然有误识别的直接死机

6、给下位机传送指令:

一开始初始化识别传送对应的数字

若为12,则后面不在传送指令

若为34,则后面路口处传"l"or"r"

若为5678,则后面两个路口传送两次"l"or“r”

7、设计思路

通过初始化函数识别一开始给入的数字并保存下来;

根据识别的情况进入不同的程序;

12号病房,识别完了以后是不用在路上在识别的,直接关掉程序;

34号病房,初始化识别完了,加两秒延迟,避免在开始的时候连续识别传指令,要在路上识别一次,要保证返回来的时候不识别不然又给下位机传指令了,还要保证初始化识别完了以后不会紧接着识别误认为是路上的标签给下位机传指令;

5678也一样,但是路上得识别两次穿两次指令;

1.2 YOLOV5神经网络模型训练

训练集:

请添加图片描述

测试集:

请添加图片描述

训练输出结果:

请添加图片描述

将通过拍摄3403张赛道数字照片,使用labellmg进行标签标定,制作数据集,yolov5训练
(哥们和队友从晚上十点标到凌晨两点(哭脸))

详细过程可看下面文章:

YOLOV5:数据集制作

YOLOV5:不懂代码也能使用YOLOV5跑项目

注意:这里yolov5得到的是.pt文件,需要进行模型转换,转化成可以加载在K210板上的.kmodel模型(后面细讲)

1.3 K210操作步骤

1.3.1 下载K210的IDE

https://www.sipeed.com/index.html

1.3.2 烧入最新固件库

官方教程:

https://wiki.sipeed.com/soft/maixpy/zh/get_started/upgrade_maixpy_firmware.html

更新固件库:

请添加图片描述

1.3.3 将文件放入TF卡中

文件目录:

请添加图片描述

将上述文件全复制到tf卡中,tf卡插入k210

注意:tf卡先格式成FAT32格式,部分牌子的tf卡格式了也不能挂载到k210上,建议多换几张卡试试

1.3.4 IED中查看效果

IDE中运行效果:

请添加图片描述

1.3.5 通过串口调试助手测试指令通信

引脚9是TX,引脚10是RX,波特率为115200

通过usb转ttl连接到电脑上

初始识别数字为6,两次转向是向左

请添加图片描述

1.4 上代码含详细注释

第一版本:

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)
#加载yolov5模型
task = kpu.load("/sd/yolov5.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()
#设置RX、RT引脚
fm.register(9, fm.fpioa.UART1_TX, force=True)
fm.register(10, fm.fpioa.UART1_RX, force=True)
#设置串口通信
uart_A = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
anchor = (0.1766, 0.1793, 0.4409, 0.3797, 0.6773, 0.5954, 1.0218, 0.9527, 2.158, 1.6841)
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" ]

#全局变量,保存初始化识别的数字
intnum = 0
#初始化识别函数
def begin(intnum):
    TF = 1
    #得分序列,放1-8识别的次数,每一帧识别成哪个,对应的位置加一,1-8哪个先到10即最终识别为哪个
    List_score01 = [0]*8
    while(TF):
         img = sensor.snapshot()
         #code是yolov5返回的每个矩形框的参数
         #例图中出现两个目标区域的时候:[{"x":9, "y":99, "w":55, "h":82, "value":0.697979, "classid":8, "index":0, "objnum":2}, {"x":137, "y":105, "w":56, "h":67, "value":0.939132, "classid":4, "index":1, "objnum":2}]
         code = kpu.run_yolo2(task, img)
         #print(code)
         if code:
             for i in code:
                #画目标区域矩形框
                a = img.draw_rectangle(i.rect())
                a = lcd. display(img)
                list1=list(i.rect())
                #print(classes[i.classid()])
                #识别到的加1
                List_score01[int(classes[i.classid()])-1] += 1
                #print(List_score01)
                if(List_score01[0] >= 10):
                    intnum = 1
                    #给下位机通信传指令
                    uart_A.write('1')
                    #print(1)
                    #退出初始化循环
                    TF = 0
                if(List_score01[1] >= 10):
                    intnum = 2
                    uart_A.write('2')
                    #print(2)
                    TF = 0
                if(List_score01[2] >= 10):
                    intnum = 3
                    uart_A.write('3')
                    #print(3)
                    TF = 0
                if(List_score01[3] >= 10):
                    intnum = 4
                    uart_A.write('4')
                    #print(4)
                    TF = 0
                if(List_score01[4] >= 10):
                    intnum = 5
                    uart_A.write('5')
                    #print(5)
                    TF = 0
                if(List_score01[5] >= 10):
                    intnum = 6
                    uart_A.write('6')
                    #print(6)
                    TF = 0
                if(List_score01[6] >= 10):
                    intnum = 7
                    uart_A.write('7')
                    #print(7)
                    TF = 0
                if(List_score01[7] >= 10):
                    intnum = 8
                    uart_A.write('8')
                    print(8)
                    TF = 0
         else:
             a = lcd.display(img)
    return intnum

#34道路识别函数
def threefour(intnum):
    #设置二维矩阵,存放每一个矩形框中不同数字识别的次数
    List_score02 = [[0]*8] * 6
    intnum02 = [0]*6
    TF = 1
    while(TF):
         #加载一帧图像
         img = sensor.snapshot()
         code = kpu.run_yolo2(task, img)
         if code:
             int_i = 0
             for i in code:
                 int_i +=1
                 a=img.draw_rectangle(i.rect())
                 a = lcd. display(img)
                 list1=list(i.rect())
                 b=(list1[0]+list1[2])/2
                 #对应的矩阵值加一
                 List_score02[int_i][int(classes[i.classid()])-1] += 1
                 print(List_score02[int_i])
                 #该目标框逐个数字分析是否出现次数到达10,即为该目标区域中的数字
                 for ii in range(8):
                    if(List_score02[int_i][ii] >= 10):
                        intnum02[int_i] = ii+1
                 #该目标区域中的数字是否是初始化识别的数字
                 if(intnum == intnum02[int_i]):
                 #判断位置,从而判断先做向右转
                    if(b < 75):
                        uart_A.write("l")
                        print("l")
                        TF = 0
                    if(b > 75):
                        uart_A.write("r")
                        print("r")
                        TF = 0
         else:
             a = lcd.display(img)
    return 0

#5678道路识别函数
def fivesixseveneight(intnum):
    #设置二维矩阵,存放每一个矩形框中不同数字识别的次数,一帧中最多有四个目标区域,但这里设置六个,防止有误识别的造成有很多矩形框程序暴死
    List_score02 = [[0]*8] * 6
    intnum02 = [0]*6
    TF = 2
    #5678道路识别要识别两次,传两次指令,两次直接通过延时函数断开
    while(TF):
         img = sensor.snapshot()
         code = kpu.run_yolo2(task, img)
         if code:
             int_i = 0
             for i in code:
                 int_i +=1
                 a=img.draw_rectangle(i.rect())
                 a = lcd. display(img)
                 list1=list(i.rect())
                 b=(list1[0]+list1[2])/2
                 List_score02[int_i][int(classes[i.classid()]) -1] += 1
                 print(List_score02[int_i])
                 for ii in range(8):
                    if(List_score02[int_i][ii] >= 10):
                        intnum02[int_i] = ii+1
                 if(intnum == intnum02[int_i]):
                    if(b < 75):
                        uart_A.write("l")
                        print("l")
                        TF -= 1
                        List_score02 = [[0]*8] * 6
                        intnum02 = [0]*6
                        time.sleep(3)
                    if(b > 75):
                        uart_A.write("r")
                        print("r")
                        TF -= 1
                        List_score02 = [[0]*8] * 6
                        intnum02 = [0]*6
                        time.sleep(3)
         else:
             a = lcd.display(img)
    return 0

#执行程序
intnum = begin(intnum)
time.sleep(3)
if(intnum == 3 or intnum == 4):
    threefour(intnum)
if(intnum == 5 or intnum == 6 or intnum ==7 or intnum == 8):
    fivesixseveneight(intnum)
uart_A.deinit()
del uart_A
a = kpu.deinit(task)


第二版本:

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)
#加载yolov5模型
task = kpu.load("/sd/yolov5.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()
#设置RX、RT引脚
fm.register(9, fm.fpioa.UART1_TX, force=True)
fm.register(10, fm.fpioa.UART1_RX, force=True)
#设置串口通信
uart_A = UART(UART.UART1, 9600, 8, 1, 0, timeout=1000, read_buf_len=4096)
anchor = (0.1766, 0.1793, 0.4409, 0.3797, 0.6773, 0.5954, 1.0218, 0.9527, 2.158, 1.6841)
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" ]

#全局变量,保存初始化识别的数字
intnum = 0
#初始化识别函数
def begin(intnum):
    TF = 1
    #得分序列,放1-8识别的次数,每一帧识别成哪个,对应的位置加一,1-8哪个先到10即最终识别为哪个
    List_score01 = [0]*8
    while(TF):
         img = sensor.snapshot()
         #code是yolov5返回的每个矩形框的参数
         #例图中出现两个目标区域的时候:[{"x":9, "y":99, "w":55, "h":82, "value":0.697979, "classid":8, "index":0, "objnum":2}, {"x":137, "y":105, "w":56, "h":67, "value":0.939132, "classid":4, "index":1, "objnum":2}]
         code = kpu.run_yolo2(task, img)
         #print(code)
         if code:
             for i in code:
                #画目标区域矩形框
                a = img.draw_rectangle(i.rect())
                a = lcd. display(img)
                list1=list(i.rect())
                #print(classes[i.classid()])
                #识别到的加1
                List_score01[int(classes[i.classid()])-1] += 1
                #print(List_score01)
                if(List_score01[0] >= 10):
                    intnum = 1
                    #给下位机通信传指令
                    uart_A.write('A')
                    print(1)
                    #退出初始化循环
                    TF = 0
                if(List_score01[1] >= 10):
                    intnum = 2
                    uart_A.write('B')
                    print(2)
                    TF = 0
                if(List_score01[2] >= 10):
                    intnum = 3
                    uart_A.write('C')
                    print(3)
                    TF = 0
                if(List_score01[3] >= 10):
                    intnum = 4
                    uart_A.write('D')
                    print(4)
                    TF = 0
                if(List_score01[4] >= 10):
                    intnum = 5
                    uart_A.write('E')
                    print(5)
                    TF = 0
                if(List_score01[5] >= 10):
                    intnum = 6
                    uart_A.write('F')
                    print(6)
                    TF = 0
                if(List_score01[6] >= 10):
                    intnum = 7
                    uart_A.write('G')
                    #print(7)
                    TF = 0
                if(List_score01[7] >= 10):
                    intnum = 8
                    uart_A.write('H')
                    print(8)
                    TF = 0
         else:
             a = lcd.display(img)
    return intnum


#道路识别函数
def then(intnum):
    while(1):
        #设置二维矩阵,存放每一个矩形框中不同数字识别的次数,一帧中最多有四个目标区域,但这里设置六个,防止有误识别的造成有很多矩形框程序暴死
        List_score02 = [[0]*8] * 6
        intnum02 = [0]*6
        TF = 1
        while(TF):
             img = sensor.snapshot()
             code = kpu.run_yolo2(task, img)
             if code:
                 int_i = -1
                 for i in code:
                     int_i +=1
                     a=img.draw_rectangle(i.rect())
                     a = lcd. display(img)
                     list1=list(i.rect())
                     b=(list1[0]+list1[2])/2
                     List_score02[int_i][int(classes[i.classid()]) -1] += 1
                     #print(int_i)
                     print(str(List_score02[int_i]) + str(int_i))
                     for ii in range(8):
                     #int_i是第几个框,ii是第几个框中的每个数字
                        if(List_score02[int_i][ii] == 10 and intnum == ii+1):
                            if(b < 75):
                                uart_A.write("L")
                                print("L")
                                TF = 0
                                List_score02 = [[0]*8] * 6
                                intnum02 = [0]*6
                            if(b > 75):
                                uart_A.write("R")
                                print("R")
                                TF = 0
                                List_score02 = [[0]*8] * 6
                                intnum02 = [0]*6
             else:
                 a = lcd.display(img)
                 TF = 0
                 List_score02 = [[0]*8] * 6
                 intnum02 = [0]*6
    return 0

#执行程序
time.sleep(3)
uart_A.write("E")
intnum = begin(intnum)
time.sleep(3)
then(intnum)
uart_A.deinit()
del uart_A
a = kpu.deinit(task)

2. OPENMV红线循迹

openmv就是玩具
——某位老哥(收录名人名言)

用openmv红线循迹,这部分比较简单,就不多说了吧

循迹测试:
请添加图片描述

测试结果:
请添加图片描述

虽然2021电赛过去了,但是现在回味起来依然很香~
请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021电赛F题视觉教程+代码免费开源 的相关文章

  • 2021 CondaHTTPError: HTTP 000 CONNECTION FAILED for url 的问题终极解决方案

    一 首先执行命令 xff0c 查看自己的镜像源 conda config show channels 二 可以首先删除已经存在的镜像源 xff08 注 xff1a 上述三个镜像源无需删除 xff01 xff01 xff01 xff09 xf
  • 2021-09-08

    工业相机精度调研 本文主要总结工业相机中面阵和线阵相机的精度调研 面阵相机 xff1a 检测场景 xff1a 常用的高精度为3 45微米相元相机 xff0c 常规可搭配0 5 xff0c 1 xff0c 2 xff0c 4倍远心镜头 在4倍
  • Java面试复习体系总结(2021版,持续更新)

    Java面试复习体系总结 xff08 2021版 xff09 感谢各位点赞 xff0c 收藏 xff0c 关注 xff01 文章会持续更新 xff0c 继续输出更多优质内容 xff0c 希望各位都能拿到好的offer 如果在准备算法题的话
  • pix2.4.8 从入手到装机(2021.4.4)

    2023 2 10 我重新完完整整的又走了一次 xff0c 记录了一下过程 xff1a 飞控是pix2 4 8 xff0c 固件是APM 原文 xff1a 咸鱼入手2套辣鸡pix xff0c 第一次使用并检查硬件好坏 xff0c 确认是否退
  • 恒温箱课程设计(2021.4.12)

    第一步 方案选择 淘宝闲鱼csdn 主要难点在于 xff1a 小控大是难点 xff0c 对执行器和驱动的选择 最终 电磁和固态继电器都不行 xff0c 要可控相位的继电器 xff0c 太贵了 只能固态了 xff0c if控制 xff0c 效
  • 2021-02-21 SONiC SAI结构5 VXLAN

    SONiC SAI结构5 VXLAN VXLAN报文处理模型流水线结构 SONiC SAI支持VXLAN协议 xff0c 具备支持VTEP的能力 根据报文处理功能模型的特点 xff0c 不同的功能块可以好像搭积木一样组合在一起形成新的功能
  • 2021-04-26 SONiC: 转发和管理平面接口SAI模型

    2021 04 26 SONiC 转发和管理平面接口SAI模型 SAI模型中转发平面和管理平面接口 转发平面和管理平面之间的接口是控制报文从转发平面传递到控制平面CPU处理的接口 对于各种类型的交换机而言 xff0c 大量不同种类的控制报文
  • 2021-09-19 当SONiC遇到P4之二

    当SONiC遇到P4之二 P4描述SAI 在当SONiC遇到P4中介绍了用P4来实现SAI Model的方式 xff0c 这种方式利用了P4数据平面编程的功能实现了SAI模型 xff0c 将P4和SONiC这两个分别位于网络数据平面和控制平
  • uC/OS-III源码下载(版本2009-2021)

    uC OS III源码下载 xff08 新版网站 xff09 下载方式一 官网 xff08 即GitHub方式 xff09 二 CSDN 下载方式 一 官网 xff08 即GitHub方式 xff09 链接 uCOS3官网 点击CODEBA
  • 2021-02-11

    多旋翼飞行器学习笔记 一 多旋翼基本组成 1 1机架 xff08 机身 起落架 涵道 xff09 1 机身 机身要考虑的有 xff1a 尺寸 布局 材料 强度 重量 指标参数包括 xff1a 重量 轴距 xff08 外圈电机围城圆的直径 x
  • 陇剑杯 2021 write up整理

    竞赛 write up 收集和整理 陇剑杯 2021 write up整理1 签到题1 1 2 JWT2 12 22 32 42 52 6 3 webshell3 13 23 33 43 53 63 7 4 日志分析4 14 24 3 5
  • 2021电赛F题之openmv巡线(附代码)

    效果展示 xff1a 出错解决方法 openmv数字识别源代码 gitee 通过使用不同阈值的方法可以得到当前区域中什么区域有红线 xff0c 对于电控而言作用类似于红外对管 xff0c 之后电控通过逻辑判断如何运动 xff0c 这就是我们
  • 2021-03-19

    switch语句实现成绩选择 注意强制转换 import java util Scanner public class Grade Switch 64 param args public static void main String ar
  • 位姿图优化小记2021.10.18

    1 场景描述 现在有一个小车在运动 xff0c 并搭载相机或激光雷达进行建图工作 xff0c 由于SLAM的作用 xff0c 在建图的同时小车也可以进行自身的定位 xff0c 因此建立的地图的参考都是相对于自身坐标系的 xff0c 也就是每
  • 2021年MathorCupD题思路

    某钢材生产制造商的钢材切割流程如图 1 所示 其中开卷上料环节将原材料钢卷放在开卷机上 xff0c 展开放平送至右侧操作区域 xff08 见图 2 xff09 剪切过程在剪切台上完成 xff0c 剪切台上依次有切头剪和圆盘剪 圆盘剪 xff
  • 2021-03-08

    大疆无人机自己动手更换电芯的注意事项 xff0c 当电池多电芯出现均大压差且调整数据无效后 xff0c 或发现某块或多块电芯鼓包 xff0c 说明电芯已经老化 xff0c 寿命用尽 xff0c 就需要更换电芯了 xff0c 厂家为保护消费者
  • 2021-01-18

    求助 xff0c 关于Ubuntu20 04安装网络调试助手打不开的问题 我在虚拟机上安装了Ubuntu20 04并安装了网络调试助手 xff0c 但却打不开 xff0c 运用了sudo apt get libqtgui4 amd64也没用
  • 2021总结. 2022展望

    2021 收获了许多 技能上 学习了多个技能 自由泳自由倒立复刻拳王梅威瑟的跳绳训练单板滑雪 总结 技能上尽量是身体力行的 自从看过 囚徒健身 后 被作者的自传所影响 希望成为想他那样的人 认知上 认知上也有了提升 读了许多书 今年比较喜欢
  • 2021校招_思科

    思科给我发的太晚了 xff0c 十一月份才给我消息 思科一面凉凉 主要是针对你的简历 问到我的主要内容包括 xff1a 数据库设计 xff0c 是否使用到设计模式 xff0c 以及遇到问题如何解决 包括ngnix xff0c redis h
  • ES6 Symbol

    概览 const mySymbol Symbol mySymbol console log mySymbol Symbol mySymbol console log mySymbol Symbol mySymbol false consol

随机推荐

  • 数据结构入门

    概念 数据 Data xff1a 是客观事物的符号表示 在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素 Data Element xff1a 是数据的基本单位 xff0c 在程序中通常作为一个整体来进行考虑
  • Linux系统发布项目完整教程

    目录 1 后端代码打包 1 1后端代码中文件上传路径修改 1 2 后端代码打包 1 3 后端项目发布 2 前端静态资源打包 2 1 项目中关于路径修改的说明 2 2模拟域名访问的设置 修改HOSTS文件 2 3 前端请求路径修改 2 4 前
  • 畸变校正与极线校正(具体原理+Matlab代码)

    附 xff1a 相关需要的工具函数源代码 xff08 投影函数 校正矩阵计算等 xff09 见最下面 1 畸变校正 1 1 形成原因 图像畸变一般有两种 xff0c 第一种是透镜本身的形状有问题 xff0c 使得图像发生径向畸变 xff1b
  • c++的http请求

    include lt iostream gt include lt fstream gt include lt cstdlib gt include lt cstring gt include lt sys socket h gt incl
  • stl智能指针和boost智能指针对比

    先说说stl中的智能指针auto ptr xff0c 先说说auto ptr的特点 std auto ptr用来管理单个堆内存对象 xff0c 但是独享所有权 xff0c 且不允许赋值和拷贝 xff08 没有重载operator 61 xf
  • boost库noncopyable简介

    前言 看了一段时间的UNP对Linux下网络编程有了一定程度的理解 xff0c 经学长推荐 xff0c 开始学习陈硕老师的 Linux多线程服务端编程 看之前特地上了知乎 xff0c 阅读者需要具备一定的C 43 43 和网络编程基础 xf
  • 车道线检测和基于RGB交通标志检测系统

    好久好久好久没更新博客了 今天是冬至 首先跟大家说一声 冬至快乐 冬至吃过汤圆 又长了一岁 感觉真的时不待人 好像自己什么事情也没有完成 也没留下一些什么东西 所以今天就想来写写博客 我是分割线 运行环境 Win7系统64位 运行平台 Qt
  • c++中h文件和lib有什么区别

    转自 xff1a https zhidao baidu com question 510969923 html 1 lib 是若干个obj的集合 xff0c 本质与obj相同 xff01 lib有静态lib和动态lib之分 静态lib将导出
  • cmake在Windows上的使用

    cmake介绍 cmake是一个构建C 43 43 代码的跨平台工具 xff0c 他能够干什么呢 xff1f 他能够搜索你的平台环境 xff0c 然后生成平台上用于Build的文件 在Windows上安装了Visual Studio 他能够
  • ubuntu系统安装完nvidia显卡驱动后黑屏,不能进入系统

    昨天想看显卡 xff0c 更新了下驱动 xff0c 发现服务器重启进不去 步骤 1 开机按esc 进入 选项界面2 进去以后选择一个括号里面带recovery mode的选项3 然后它自动黑屏出现代码 xff0c 然后弹出一个选择框 xff
  • ubuntu18.04下cmake的安装

    一 使用安装命令 span class token function sudo span span class token function apt span span class token function install span c
  • Nginx/Lighttpd/Apache三大web服务器对比分析

    一 xff0e 软件介绍 apache lighttpd nginx 1 lighttpd Lighttpd是一个具有非常低的内存开销 xff0c cpu占用率低 xff0c 效能好 xff0c 以及丰富的模块等特点 lighttpd是众多
  • STM32学习笔记八——串口实现不定长数据传输

    生命不息 xff0c 奋斗不止 0 摘要 今天说一下STM32单片机的接收不定长度字节数据的方法 由于STM32单片机带IDLE中断 xff0c 所以利用这个中断 xff0c 可以接收不定长字节的数据 xff0c 由于STM32属于ARM单
  • linux shell 字符串长度

    本篇内容主要包括以下内容 xff1a 获取字符串长度的方法 各方法间性能比较 相关内容补充 说明 xff1a 本篇内容为学习shell 编程 老男孩教程 笔记 xff0c 部分内容为相关视频课程内容 xff0c 补充部分是我查资料所得 xf
  • measurement studio测控与单片机通信上位机

    using NationalInstruments Analysis using NationalInstruments Analysis Conversion using NationalInstruments Analysis Dsp
  • C语言实现Socket简单通信

    环境是linux xff0c 不过应该没什么影响 xff0c 因为只用到了socket的基本用法 xff0c 没有涉及pthread等 分为服务器端和客户端 xff0c 服务器端监听端口发来的请求 xff0c 收到后向客户端发送一个Hell
  • 接口工具POSTMAN怎么设置中文

    相信各位测试工程师或者测试小白们都会在进行接口测试的时候接触到POSTMAN这款强大的接口测试软件 Postman 从最初设计上就是为接口测试而生的 xff0c 所以在程序员中广泛使用 xff0c 在开发调试网络程序时跟踪一些网络请求 xf
  • 【第三方库】libcurl实现http及https方式下载和访问

    准备条件 xff1a 编译好的libcurl库 xff0c 如果要支持https xff0c 需要和openssl一起编译 xff0c 网上教程较多 示例代码 xff1a xff08 使用loadlibrary的方式只是为了测试方便 xff
  • ROS学习系列:第四讲 — gazebo模型建立

    gazebo模型元素 World Files 文件包含机器人 灯光 传感器 静态物体 文件格式SDF xff0c 后缀扩展名 world gazebo服务端gzserver读取world文件产生和构成world Model Files 文件
  • 2021电赛F题视觉教程+代码免费开源

    2021电赛F题视觉教程 43 代码免费开源 最近好多要电赛题的源码 xff0c 其他csdn营销号下载都需要会员或钱 xff0c 正好最近课设又要做一遍电赛小车题 xff0c 哥们先把代码开源了 xff0c 饿死营销号 电赛宝藏链接 xf