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

基于Python OpenCV、使用霍夫變換的小車(chē)視覺(jué)循線識(shí)別

這篇具有很好參考價(jià)值的文章主要介紹了基于Python OpenCV、使用霍夫變換的小車(chē)視覺(jué)循線識(shí)別。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

? ? ? ? 近期在做一個(gè)小車(chē)視覺(jué)循線的項(xiàng)目。小車(chē)將沿著一條線行駛,并用自帶的攝像頭拍攝道路前方的道路,行駛過(guò)程會(huì)遇到鈍角拐彎、弧線拐彎、直角拐彎這些特殊元素,小車(chē)需要在識(shí)別元素之后進(jìn)行合理地轉(zhuǎn)彎。

????????在網(wǎng)上看到大部分的循線方法主要是二值化之后遍歷圖像中的所有像素點(diǎn)然后求亮白色像素點(diǎn)的橫坐標(biāo)平均值,把平均值和圖像中心值做差求出小車(chē)的偏移量,再控制小車(chē)的運(yùn)動(dòng)。這樣的方法需要用二重for循環(huán)遍歷捕獲圖像的所有像素點(diǎn),效率低下。經(jīng)過(guò)本人的一位學(xué)長(zhǎng)的點(diǎn)撥,本人遂決定采用霍夫變換的方法進(jìn)行循線識(shí)別。

python小車(chē)尋線,副業(yè)——視覺(jué),python,opencv,計(jì)算機(jī)視覺(jué),人工智能,開(kāi)發(fā)語(yǔ)言

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(圖片來(lái)自網(wǎng)絡(luò),侵刪)

思路:

1、首先,要選擇正確的識(shí)別區(qū)域。小車(chē)前方的一塊區(qū)域是小車(chē)即將到達(dá)的地方,而其他區(qū)域大都對(duì)識(shí)別沒(méi)有作用。所以,我們要ROI選取選擇合適的區(qū)域,來(lái)提高識(shí)別效率。

2、之后,對(duì)圖像進(jìn)行初步處理。這里,本人先將凸顯變?yōu)榛叶葓D像,然后進(jìn)行大津法的二值化,最后采用高斯濾波。大津法的二值化能夠根據(jù)圖像的具體亮度分布來(lái)決定閾值,能夠很好地把需要識(shí)別的白線分離出來(lái)而剔除干擾元素;高斯濾波能夠使圖像變得平滑,使接下來(lái)霍夫變換更加精準(zhǔn)。

3、接下來(lái)便是霍夫變換了。先把上一步得到的圖像進(jìn)行Canny邊緣檢測(cè),之后采用霍夫變換函數(shù)讀取圖像中的線段。注意這里要使用概率霍夫變換,否則得出的結(jié)果都是直線而非線段,無(wú)法得出偏差值。在這之后,我們就會(huì)得到所有線段始末兩點(diǎn)的橫縱坐標(biāo)。

4、讀取這些坐標(biāo)以后,我們需要兩個(gè)量:線段的平均偏移量和斜率接近于0的線段數(shù)量。前者用于檢測(cè)小車(chē)的偏移情況,否則則用于檢測(cè)是否有直角彎道。我們可以在用for循環(huán)遍歷所有線段始末兩點(diǎn)的坐標(biāo)之后,用橫坐標(biāo)累加值除以運(yùn)算的點(diǎn)的總數(shù)再減去圖像中心橫坐標(biāo)得出平均偏移量,用斜率計(jì)算公式[(y1-y2)/(x1-x2)]檢測(cè)線段是否水平或接近水平、統(tǒng)計(jì)這樣的線段數(shù)量。

5、最后進(jìn)行判斷:如果水平線段的數(shù)量大于0,則說(shuō)明小車(chē)遇到了直角彎道;否則沒(méi)有遇到直角彎道,小車(chē)應(yīng)當(dāng)按照偏移量的情況進(jìn)行打角轉(zhuǎn)彎

?這邊附上一段用于檢測(cè)一幀圖像的代碼。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-596743.html

import cv2
import numpy as np
import matplotlib.pyplot as plt
import pylab

def midsearch():
    img = cv2.imread("pic", -1)                                                   #導(dǎo)入圖片,參數(shù)請(qǐng)自行修改
    h,w,c= img.shape

    mid=img[int(h*0.7):int(h),int(0.25*w):int(0.75*w)]                            #ROI選區(qū),選擇圖像前面的一塊區(qū)域
    hm, wm, cm = mid.shape  
    gray = cv2.cvtColor(mid, cv2.COLOR_BGR2GRAY)                                  #設(shè)置圖像為灰度圖
    ret, gray = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)  #大津法二值化
    gray = cv2.medianBlur(gray, 11)                                                #高斯濾波
    edges = cv2.Canny(gray, 50, 150, apertureSize=3)
    orgb = cv2.cvtColor(mid, cv2.COLOR_BGR2RGB)
    oShow = orgb.copy()
    lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 1, minLineLength=100, maxLineGap=60)#邊緣檢測(cè)之后霍夫變換得出直線
    fn=0
    n=0
    tan=1.0
    T=0.0
    for line in lines:
        x1, y1, x2, y2 = line[0]
        cv2.line(orgb, (x1, y1), (x2, y2), (255, 0, 0), 5)
        n+=2;
        fn+=x1
        fn+=x2
        if x1!=x2:
            tan=(y1-y2)/(x1-x2)
            if abs(tan)<0.1 and abs(x1-x2)>0.1*wm:
                    T+=1
        else:
            tan=1                                       #通過(guò)檢測(cè)直線斜率檢測(cè)是否遇到直角
    average=fn/n
    delta=average-wm/2
    # print(T)
    # print(delta)
    # print(average)
    # plt.subplot(121)
    # plt.imshow(oShow)
    # plt.axis('off')
    # plt.subplot(122)
    # plt.imshow(orgb)
    # plt.axis('off')
    # pylab.show()
    return delta,T

def midjudge(delta,T):
    #直角判斷
    if delta>0 and T>=1:#右直角
        print("右直角")
    elif delta<0 and T>=1:#左直角
        print("左直角")
    else:
    #正常行駛,包括鈍角以及圓弧的轉(zhuǎn)彎
        if abs(delta)<=10:
            print("直行")
        elif delta>10:
            print("右轉(zhuǎn)彎")
        elif delta<-10:
            print("左轉(zhuǎn)彎")


delta,T=midsearch()
midjudge(delta,T)
cv2.waitKey(0)
cv2.destroyAllWindows()

到了這里,關(guān)于基于Python OpenCV、使用霍夫變換的小車(chē)視覺(jué)循線識(shí)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenCV——霍夫變換圓檢測(cè)

    OpenCV——霍夫變換圓檢測(cè)

    ? ? HoughCircles 該函數(shù)使用霍夫變換在灰度圖像中查找圓。 image :輸入圖像,需要為 8 位的灰度單通道圖像。 circle :找到的圓的輸出向量。每個(gè)向量被編碼為3或4個(gè)元素的浮點(diǎn)型向量 ( x , y , r a d i u s ) (x, y, radius) ( x , y , r a d i u s ) 或 ( x , y , r a d i u s , v o t e s ) (x, y, radius,

    2024年02月13日
    瀏覽(23)
  • 霍夫變換直線檢測(cè)算法實(shí)現(xiàn)OpenCV(C++)

    霍夫變換直線檢測(cè)算法實(shí)現(xiàn)OpenCV(C++)

    一、原理 對(duì)于霍夫變換的原理這里就不進(jìn)行描述啦,感興趣的可以自行搜索。也可以看知乎上面的這篇貼文通俗易懂理解——霍夫變換原理。 二、算法代碼 三、效果測(cè)試 測(cè)試代碼 上述代碼中的drawLine()函數(shù)是《OpenCV4快速入門(mén)》一書(shū)的代碼清單 7-2中的原函數(shù),只用于畫(huà)線。

    2024年02月05日
    瀏覽(22)
  • OpenCV | 霍夫變換:以車(chē)道線檢測(cè)為例

    OpenCV | 霍夫變換:以車(chē)道線檢測(cè)為例

    霍夫變換 霍夫變換只能灰度圖,彩色圖會(huì)報(bào)錯(cuò) lines = cv2.HoughLinesP(edge_img,1,np.pi/180,15,minLineLength=40,maxLineGap=20) 參數(shù)1:要檢測(cè)的圖片矩陣 參數(shù)2:距離r的精度,值越大,考慮越多的線 參數(shù)3:距離theta的精度,值越大,考慮越多的線 參數(shù)4:累加數(shù)閾值,值越小,考慮越多的線

    2024年02月04日
    瀏覽(26)
  • OpenCV26HoughCircles 霍夫圓變換原理及圓檢測(cè)

    OpenCV26HoughCircles 霍夫圓變換原理及圓檢測(cè)

    霍夫圓變換的基本原理與霍夫線變換大體類(lèi)似 對(duì)直線來(lái)說(shuō),一條直線能由極徑極角(r,θ)表示,而對(duì)于圓來(lái)說(shuō),我們需要三個(gè)參數(shù):圓心(a,b),半徑 r 笛卡爾坐標(biāo)系中圓的方程為: (x-a)2 + (y-b)2 = r2 化簡(jiǎn)便可得到: a = x - r·cosθ b = y - r·sinθ 對(duì)于(x0,y0),我們可以將通

    2024年02月03日
    瀏覽(22)
  • OpenCV中的圖像處理 —— 霍夫線 / 圈變換 + 圖像分割(分水嶺算法) + 交互式前景提?。℅rabCut算法)

    OpenCV中的圖像處理 —— 霍夫線 / 圈變換 + 圖像分割(分水嶺算法) + 交互式前景提?。℅rabCut算法)

    ??上一節(jié)我們介紹了OpenCV中傅里葉變換和模板匹配,這一部分我們來(lái)聊一聊霍夫線/圈變換的原理和應(yīng)用、使用分水嶺算法實(shí)現(xiàn)圖像分割和使用GrabCut算法實(shí)現(xiàn)交互式前景提取 ??哈嘍大家好,這里是ErrorError!,一枚某高校大二本科在讀的♂同學(xué),希望未來(lái)在機(jī)器視覺(jué)領(lǐng)域能夠有

    2023年04月08日
    瀏覽(31)
  • OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

    OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

    為了方便開(kāi)發(fā)人員的操作,OpenCV還提供了一些圖像變換的API,本篇文章講簡(jiǎn)單介紹各種API的使用,并附上一些樣例。 圖像縮放函數(shù),用于把圖像按指定的尺寸放大或縮小。 dst = cv2.resize(src, dsize, fx, fy, interpolation) dst = 生成的目的圖像 src:需要變換的原圖像 disize:(x, y)需要

    2024年02月08日
    瀏覽(99)
  • 基于Python+OpenCV的手勢(shì)識(shí)別系統(tǒng):智能家居和智能小車(chē)的燈光控制

    基于Python+OpenCV的手勢(shì)識(shí)別系統(tǒng):智能家居和智能小車(chē)的燈光控制

    基于python+opencv的手勢(shì)識(shí)別系統(tǒng),可控制燈的亮度,智能家居,智能小車(chē)。 基于python+opencv的手勢(shì)識(shí)別系統(tǒng)軟件。 內(nèi)含svm模型,和膚色識(shí)別,銳化處理。 基于 win10+Python3.7的環(huán)境,利用Python的OpenCV、Sklearn和PyQt5等庫(kù)搭建了一個(gè)較為完整的手勢(shì)識(shí)別系統(tǒng),用于識(shí)別日常生活中1-1

    2024年04月15日
    瀏覽(100)
  • 樹(shù)莓派視覺(jué)小車(chē) -- OpenCV巡線(HSL色彩空間、PID)

    樹(shù)莓派視覺(jué)小車(chē) -- OpenCV巡線(HSL色彩空間、PID)

    目錄 試錯(cuò) 試錯(cuò)1:形態(tài)學(xué)處理 試錯(cuò)2:HSV色彩空間 基礎(chǔ)理論 1、HSV與HSL色彩空間 2、PID調(diào)節(jié) 一、OpenCV圖像處理 1、在HSL色彩空間下得到二值圖 2、 對(duì)二值圖形態(tài)學(xué)處理 3、找出線的輪廓和中心點(diǎn)坐標(biāo) 二、PID 三、運(yùn)動(dòng)控制 總代碼 一開(kāi)始用的形態(tài)學(xué)處理,自行改變閾值,調(diào)試之后

    2024年02月04日
    瀏覽(30)
  • Python Opencv實(shí)踐 - 霍夫圓檢測(cè)(Hough Circles)
  • Hough 算法(霍夫變換)

    目錄 一.什么是Hough 算法(霍夫變換) 它的基本思想是: Hough 變換的主要步驟為: 二、Hough 變換的應(yīng)用 它的主要應(yīng)用如下: 1. 直線檢測(cè): 2. 圓檢測(cè): 3. 橢圓檢測(cè): 4. 三角形檢測(cè): 5. 人臉檢測(cè): Hough 變換(Hough Transform)是一種常用的檢測(cè)圖形的算法。 它通過(guò)搜索特定形狀(如直線,圓,橢

    2024年02月08日
    瀏覽(15)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包