国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OPENMV巡線轉彎代碼 適用于電賽優(yōu)化版2022.6.29

這篇具有很好參考價值的文章主要介紹了OPENMV巡線轉彎代碼 適用于電賽優(yōu)化版2022.6.29。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

OPENMV巡線轉彎代碼 優(yōu)化版2022.6.29

大四畢業(yè)了,用不到了,這幾天趁著閑優(yōu)化了一下,之前那個號寫的太復雜了

  • OPENMV通過UART進行通信
  • ROIS為5塊感性區(qū)域,在160x120范圍內(nèi)分為5塊,方便遇到路口和前方無道路的處理
  • largest_blob為blob模塊[2]為色塊w,[3]為色塊h,官方docs上有說明
  • 對out_str進行設置可看到串口輸出的內(nèi)容
  • 然后就是一些變量有用沒用的自己使用的時候刪一下,這一份的邏輯還是存在問題的
  • 本人將此代碼用于2021送藥小車復現(xiàn)配合K210數(shù)字識別復現(xiàn)成功
  • 直接復制粘貼就能用,不能用的自己反思一下自己是不是啥都不會
import sensor, image, time, math,pyb
from pyb import Pin, Timer,UART

uart = pyb.UART(1,115200,timeout_char = 1000)#串口初始化

# Tracks a black line. Use [(128, 255)] for a tracking a white line.
Red_Thresholds = [(33, 61, 16, 85, 21, 69)]

ROIS = [                            #[ROI, weight]越近,權重越大,在這里權值暫時不考慮
              (30, 90,   100, 30, 0), #下面1
              (40, 40,   80, 40, 0), #中間2
              (30, 0,    100, 30, 0), #上面3  160 *120
              (0, 20,    30, 100, 0), #左邊4
              (130,20 ,   30, 100, 0)  #右邊5
      ]
weight_sum = 0
for r in ROIS: weight_sum += r[4] # r[4] is the roi weight.

#---------------------------------------攝像頭初始化-----------------------------------------#

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) #320*240
sensor.skip_frames(time=2000)
sensor.set_auto_gain(False)                         # 顏色追蹤關閉自動增益
sensor.set_auto_whitebal(False)                     # 顏色追蹤關閉白平衡

flag=0;
i=0;  #記錄第幾行數(shù)據(jù)
j=0;  #記錄直線數(shù)量
led=pyb.LED(3)#必要的時候進行紅外補光

cross_num = 0 #第幾個路口
cross_flag = 0 #轉彎的標志
back_flag = 0;  #返回的標志

center_flag1 = 0 #區(qū)域標志
center_flag2 = 0
center_flag3 = 0
center_flag4 = 0
center_flag5 = 0


out_str1='';
clock = time.clock()
#幀率
old_img= sensor.snapshot().mean_pooled(4,4)        # 160x120 -> 40x30,前一張照片
#定義一個定時發(fā)送數(shù)據(jù)的函數(shù)
def tick(timer):#we will receive the timer object when being called
       global flag
       flag=1

tim = Timer(4,freq=100)            # create a timer object using timer 4 - trigger at 1Hz
tim.callback(tick)                # set the callback to our tick function




#--------------------------------------while循環(huán)開始-----------------------------------------#

while(True):
    pyb.LED(1).on()
    if(flag==1):
        img=sensor.snapshot()
        img.lens_corr(1.5) # for 2.8mm lens...攝像頭畸變糾正
        #--------------------------------------尋找紅色色塊的位置--------------------------------------#
        #檢測色塊位置
        for r in ROIS:
           i=i+1;
           blobs=img.find_blobs(Red_Thresholds, roi=r[0:4], merge=True,pixels_area=10) # r[0:4] is roi tuple.
           if blobs:#如果找到了顏色塊
               # Find the blob with the most pixels.
               largest_blob = max(blobs, key=lambda b: b.pixels())
               #print("0", largest_blob[0])
               #print("1", largest_blob[1])
               #print("2", largest_blob[2])
               #print("3", largest_blob[3])
               if(i==1):#下面矩形
                   if(largest_blob[2]>=5):#排除瑕疵點
                       if(largest_blob[3]>=5):
                           center_flag1=1;#下面的矩形找到的標志
                           img.draw_rectangle(largest_blob.rect())
                           img.draw_cross(largest_blob.cx(),largest_blob.cy(),2)

               elif(i==2):#中間矩形
                   if(largest_blob[2]>=5):
                       if(largest_blob[3]>=5):
                           center_flag2=1;
                           img.draw_rectangle(largest_blob.rect())
                           img.draw_cross(largest_blob.cx(),largest_blob.cy(),2)
               elif(i==3):#上面的矩形
                   center_flag3=2;#有找到,但是不符合要求
                   if(largest_blob[2]>=5):
                       if(largest_blob[3]>=5):
                           center_flag3=1;
                           img.draw_rectangle(largest_blob.rect())
                           img.draw_cross(largest_blob.cx(),largest_blob.cy(),2)
               elif(i==4):#左邊的矩形找到了
                   if(largest_blob[2]>=5):
                       if(largest_blob[3]>=5):
                           center_flag4=1;
                           img.draw_rectangle(largest_blob.rect())
                           img.draw_cross(largest_blob.cx(),largest_blob.cy(),2)
               elif(i==5):#右邊的矩形找到了
                   if(largest_blob[2]>=5):
                       if(largest_blob[3]>=5):
                           center_flag5=1;
                           img.draw_rectangle(largest_blob.rect())
                           img.draw_cross(largest_blob.cx(),largest_blob.cy(),2)



        #--------------------------------------遇到的路口--------------------------------------#
        if(center_flag2>0 and center_flag4>0 and center_flag5>0):
            cross_num = cross_num + 1 #第幾個路口

        #--------------------------------------前方無路--------------------------------------#
        if(cross_num>0 and center_flag2==0 and center_flag4==0 and center_flag5==0 and center_flag3==0):
            back_flag = 1








        i=0;

        out_str1+='%.d'%      int(center_flag1);   #直角標志位
        out_str1+='%.d'%      int(center_flag2);   #直角標志位
        out_str1+='%.d'%      int(center_flag3);   #直角標志位
        out_str1+='%.d'%      int(center_flag4);   #直角標志位
        out_str1+='%.d'%      int(center_flag5);   #直角標志位
        out_str1+='%.4d'%      int(cross_num);   #路口標志位
        out_str1+='%.d'%      int(back_flag);   #返回標志位

        uart.write('s'+out_str1+'#')
        print(out_str1)
        #像素位移之和清零
        turn_flag=0;
        center_flag1 = 0 #區(qū)域標志
        center_flag2 = 0
        center_flag3 = 0
        center_flag4 = 0
        center_flag5 = 0

        #數(shù)組清零
        out_str1=''#清除之前的數(shù)據(jù)
        flag=0;
        #-----------------------------------串口打印數(shù)據(jù)-----------------------------------------#

文章來源地址http://www.zghlxwxcb.cn/news/detail-612010.html

到了這里,關于OPENMV巡線轉彎代碼 適用于電賽優(yōu)化版2022.6.29的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • OpenMV:14巡線小車

    OpenMV:14巡線小車

    這個例子展示了在OpenMV Cam上使用get_regression()方法獲得ROI的線性回歸。使用這種方法,可以輕松讓機器人跟蹤所有指向相同大致方向的線。 本例程可以用于機器人巡線,效果非常好。 “巡線小車”的原理和“追小球的小車”是差不多一樣的,其中car.py和pid.py完全一樣,改

    2024年02月17日
    瀏覽(17)
  • 2022電賽小車開源代碼講解開源

    2022電賽小車開源代碼講解開源

    2022電賽小車我認為有主要是幾個主要的問題,我將分這幾個部分來講解 目錄 一、循跡 二、藍牙通信,雙車數(shù)據(jù)傳輸 三、起始路口的識別 四、分叉路口的識別 五、源碼 ?2022電賽,雙車穩(wěn)定行駛_嗶哩嗶哩_bilibili 循跡我們組用的是五路灰度,灰度跟紅外對管的作用是差不多的

    2024年02月09日
    瀏覽(18)
  • 2021電賽F題數(shù)字識別和巡線部分

    2021電賽F題數(shù)字識別和巡線部分

    文章之前12月發(fā)了一次,但是我后來申請的免畢設后,用到了一些文字,所以刪了這篇文章,但是還是查重了,于是我把一些程序講解先刪了,等畢設結束后再編輯加上。 這次電賽我沒有準備多少東西,只提前準備了圖像識別和坐標計算一類的。在20年的省賽幫過雪地調(diào)過k

    2024年02月07日
    瀏覽(19)
  • Openmv+STM32F103C8T6視覺巡線小車

    Openmv+STM32F103C8T6視覺巡線小車

    機器視覺巡線處理是參考openmv官方代碼 Openmv官網(wǎng)源代碼:book. openmv.cc/project/follow-lines.html 根據(jù)官網(wǎng)視頻及教程將源碼注入openmv中。 小車巡的是黑線,所以顏色閾值要更改。 在文件示例中打開helloworld.py。 打開工具/機器視覺/閾值編輯器/緩沖區(qū)。 將我們需要尋跡的黑線調(diào)至全

    2023年04月09日
    瀏覽(24)
  • 基于Openmv H7 Plus 的紅色巡線+十字路口+多數(shù)字識別算法

    基于Openmv H7 Plus 的紅色巡線+十字路口+多數(shù)字識別算法

    由于是采用命令集的方式控制openmv,攝像頭不需要接收太多的數(shù)據(jù),我采用的是判斷串口接收的長度來區(qū)分命令集。flag為接收數(shù)據(jù)的長度,通過發(fā)送不同長度數(shù)據(jù)來改變openmv的工作模式 1.巡線 在openmv的開源庫中有色塊識別的關鍵函數(shù)blob(),可以傳回識別出的矩形色塊的中心

    2024年02月16日
    瀏覽(232)
  • 【手拉手 帶你準備電賽】單色塊識別(基于openmv)

    【手拉手 帶你準備電賽】單色塊識別(基于openmv)

    目錄 文章背景 openmv介紹 openmv色塊識別原理 openmv色塊識別代碼 最終結果 疑惑細解: 關于閾值的設置: 關于自動增益和白平衡 ????????我們都聽說過什么圖像識別、色塊識別,并且在2021年電賽——智能送藥小車中也使用到了相關技術,那么你知道相關的原理和實現(xiàn)方法

    2024年02月11日
    瀏覽(14)
  • 2023年電賽---運動目標控制與自動追蹤系統(tǒng)(E題)OpenMV方案

    2023年電賽---運動目標控制與自動追蹤系統(tǒng)(E題)OpenMV方案

    如果有嵌入式企業(yè)需要招聘校園大使,湖南區(qū)域的日常實習,任何區(qū)域的暑假Linux驅動實習崗位,可C站直接私聊,或者郵件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (1)廢話少說,很多人可能無法訪問GitHub,所以我直接貼出可能要用的代碼。 此博客還會進行更新,

    2024年02月14日
    瀏覽(18)
  • 2021電賽F題送藥小車視覺部分的一種思路(雙OpenMV法)

    2021電賽F題送藥小車視覺部分的一種思路(雙OpenMV法)

    前言: 最近參加了2021年電賽的F題,因為諸多原因未能完賽,現(xiàn)將圖像識別部分的記錄一下,交流學習。 因為只介紹視覺部分,我們就節(jié)選相關的部分吧。 設計并制作智能送藥小車,模擬完成在醫(yī)院藥房與病房間藥品的送取作業(yè)。院區(qū)結構示意如圖 1 所示。院區(qū)走廊兩側的

    2024年02月15日
    瀏覽(16)
  • 【C++】C++代碼性能優(yōu)化的方法(全網(wǎng)最適用)

    本文將總結并詳細介紹C++代碼性能優(yōu)化的方法,旨在為C++開發(fā)者提供一個全面、實用的性能優(yōu)化指南。無論你是剛入門的新手,還是有經(jīng)驗的開發(fā)者,都能從中找到適用于你的優(yōu)化技巧。 const 是一個修飾符,可以用來告訴編譯器一個變量的值不應該改變。這樣可以提高程序的

    2024年02月03日
    瀏覽(9)
  • 2022電賽小車跟隨行駛系統(tǒng)(C題)復盤

    2022電賽小車跟隨行駛系統(tǒng)(C題)復盤

    此次的電賽感覺結束的挺突然的,在找到方向準備細化地進行調(diào)試的時候卻是沒有足夠時間來完成代碼上的完善。想著此次遺憾,寫一篇博客來記錄一下自己的經(jīng)歷吧,總結總結此次的電賽時光。 ? 電賽題目 ?首先便是題目的選擇,由于我們之前校電賽時簡單接觸過小車的題

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包