色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于Python對交通路口的紅綠燈進行顏色檢測

新機器視覺 ? 來源:CSDN技術社區 ? 作者:2cy- ? 2021-10-13 09:32 ? 次閱讀
轉自|Python聯盟

1.視頻讀取

首先把視頻讀取進來,因為我測試的視頻是4k的所以我用resize調整了一下視頻的分辨大小

cap = cv2.VideoCapture('video/小路口.mp4')while True:    ret,frame = cap.read()    if ret == False:        break    frame = cv2.resize(frame,(1920,1080))    cv2.imshow('frame',frame)    c = cv2.waitKey(10)    if c==27:break

imshow()

2.截取roi區域

截取roi的區域,也就是說,為了避免多余的干擾因素我們要把紅綠燈的位置給截取出來

截取后的roi

3.轉換hsv顏色空間

HSV顏色分量范圍

(詳細參考:https://www.cnblogs.com/wangyblzu/p/5710715.html)
一般對顏色空間的圖像進行有效處理都是在HSV空間進行的,然后對于基本色中對應的HSV分量需要給定一個嚴格的范圍,下面是通過實驗計算的模糊范圍(準確的范圍在網上都沒有給出)。

H: 0— 180

S: 0— 255

V: 0— 255

此處把部分紅色歸為紫色范圍(如下圖所示):

da25da02-14b7-11ec-8fb8-12bb97331649.png

上面是已給好特定的顏色值,如果你的顏色效果不佳,可以通過python代碼來對min和max值的微調,用opencv中的api來獲取你所需理想的顏色,可以復制以下代碼來進行顏色的調整。
1.首先你要截取roi區域的一張圖片
2.讀取這張圖然后調整顏色值

顏色調整代碼如下:

(詳細參考:https://www.bilibili.com/video/BV16K411W7x9)

import cv2import numpy as np
def empty(a):    pass
def stackImages(scale,imgArray):    rows = len(imgArray)    cols = len(imgArray[0])    rowsAvailable = isinstance(imgArray[0], list)    width = imgArray[0][0].shape[1]    height = imgArray[0][0].shape[0]    if rowsAvailable:        for x in range ( 0, rows):            for y in range(0, cols):                if imgArray[x][y].shape[:2] == imgArray[0][0].shape [:2]:                    imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)                else:                    imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale)                if len(imgArray[x][y].shape) == 2: imgArray[x][y]= cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR)        imageBlank = np.zeros((height, width, 3), np.uint8)        hor = [imageBlank]*rows        hor_con = [imageBlank]*rows        for x in range(0, rows):            hor[x] = np.hstack(imgArray[x])        ver = np.vstack(hor)    else:        for x in range(0, rows):            if imgArray[x].shape[:2] == imgArray[0].shape[:2]:                imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale)            else:                imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale)            if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)        hor= np.hstack(imgArray)        ver = hor    return ver
#讀取的圖片路徑path = './green.jpg'cv2.namedWindow("TrackBars")cv2.resizeWindow("TrackBars",640,240)cv2.createTrackbar("Hue Min","TrackBars",0,179,empty)cv2.createTrackbar("Hue Max","TrackBars",19,179,empty)cv2.createTrackbar("Sat Min","TrackBars",110,255,empty)cv2.createTrackbar("Sat Max","TrackBars",240,255,empty)cv2.createTrackbar("Val Min","TrackBars",153,255,empty)cv2.createTrackbar("Val Max","TrackBars",255,255,empty)
while True:    img = cv2.imread(path)    imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)    h_min = cv2.getTrackbarPos("Hue Min","TrackBars")    h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")    s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")    s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")    v_min = cv2.getTrackbarPos("Val Min", "TrackBars")    v_max = cv2.getTrackbarPos("Val Max", "TrackBars")    print(h_min,h_max,s_min,s_max,v_min,v_max)    lower = np.array([h_min,s_min,v_min])    upper = np.array([h_max,s_max,v_max])    mask = cv2.inRange(imgHSV,lower,upper)    imgResult = cv2.bitwise_and(img,img,mask=mask)

    imgStack = stackImages(0.6,([img,imgHSV],[mask,imgResult]))    cv2.imshow("Stacked Images", imgStack)cv2.waitKey(1)

運行代碼后調整的結果(如下圖所示),很明顯可以看到綠色已經被獲取到。

da35e1a4-14b7-11ec-8fb8-12bb97331649.png

4.二值圖像顏色判定

因為圖像是二值的圖像,所以如果圖像出現白點,也就是255,那么就取他的max最大值255,視頻幀的不斷變化然后遍歷每個顏色值

red_color = np.max(red_blur)green_color = np.max(green_blur)if red_color == 255:  print('red')elif green_color == 255:print('green')

5.顏色結果畫在圖像上

用矩形框來框選出紅綠燈區域

cv2.rectangle(frame,(1020,50),(1060,90),(0,0,255),2) #按坐標畫出矩形框cv2.putText(frame,"red",(1020,40),cv2.FONT_HERSHEY_COMPLEX,1,(0,0,255),2)#顯示red文本信息

6.完整代碼

import cv2import numpy as np
cap = cv2.VideoCapture('video/小路口.mp4')while True:    ret,frame = cap.read()    if ret == False:        break    frame = cv2.resize(frame,(1920,1080))    #截取roi區域    roiColor = frame[50:90,950:1100]    #轉換hsv顏色空間    hsv = cv2.cvtColor(roiColor,cv2.COLOR_BGR2HSV)
    #red    lower_hsv_red = np.array([157,177,122])    upper_hsv_red = np.array([179,255,255])    mask_red = cv2.inRange(hsv,lowerb=lower_hsv_red,upperb=upper_hsv_red)    #中值濾波    red_blur = cv2.medianBlur(mask_red, 7)    #green    lower_hsv_green = np.array([49,79,137])    upper_hsv_green = np.array([90,255,255])    mask_green = cv2.inRange(hsv,lowerb=lower_hsv_green,upperb=upper_hsv_green)    #中值濾波    green_blur = cv2.medianBlur(mask_green, 7)
    #因為圖像是二值的圖像,所以如果圖像出現白點,也就是255,那么就取他的max最大值255    red_color = np.max(red_blur)    green_color = np.max(green_blur)    #在red_color中判斷二值圖像如果數值等于255,那么就判定為red    if red_color == 255:        print('red')                        #。。。這是我經常會混淆的坐標。。。就列舉出來記一下。。。                        #      y  y+h x  x+w                        #frame[50:90,950:1100]
                        #     x   y    x+w  y+h        cv2.rectangle(frame,(1020,50),(1060,90),(0,0,255),2) #按坐標畫出矩形框        cv2.putText(frame, "red", (1020, 40), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255),2)#顯示red文本信息    #在green_color中判斷二值圖像如果數值等于255,那么就判定為green    elif green_color == 255:        print('green')        cv2.rectangle(frame,(1020,50),(1060,90),(0,255,0),2)        cv2.putText(frame, "green", (1020, 40), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0),2)
    cv2.imshow('frame',frame)    red_blur = cv2.resize(red_blur,(300,200))    green_blur = cv2.resize(green_blur,(300,200))    cv2.imshow('red_window',red_blur)    cv2.imshow('green_window',green_blur)
    c = cv2.waitKey(10)    if c==27:break
編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4780

    瀏覽量

    68539
  • python
    +關注

    關注

    56

    文章

    4793

    瀏覽量

    84634
  • 4K
    4K
    +關注

    關注

    2

    文章

    523

    瀏覽量

    59867
  • HSV
    HSV
    +關注

    關注

    0

    文章

    10

    瀏覽量

    2603

原文標題:基于Python對交通路口的紅綠燈進行顏色檢測

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于CNN和英特爾開發板的紅綠燈控制系統設計

    隨著中國經濟的快速增長和城市化進程的加速,城市交通擁堵、交通事故頻發以及環境污染等問題日益嚴重,尤其是在大城市中,這些問題表現得尤為突出。交通擁堵不僅影響了市民的日常出行效率,更是嚴重影響了緊急車輛
    的頭像 發表于 12-20 10:47 ?597次閱讀
    基于CNN和英特爾開發板的<b class='flag-5'>紅綠燈</b>控制系統設計

    使用Python進行圖像處理

    下面是一個關于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發表于 11-07 10:14 ?210次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進行</b>圖像處理

    基于51單片機的路口交通燈控制系統仿真

    按鍵按下,所有路口紅燈亮,車輛禁行。(6)特種車輛通行按鍵分為東西和南北兩個按鍵,東西按鍵按下,東西向綠燈全亮;南北按鍵按下,南北向綠燈全亮,20S后恢復。設計介紹51單片機簡介51單片是一種低功耗
    的頭像 發表于 10-22 14:10 ?140次閱讀
    基于51單片機的<b class='flag-5'>路口交通</b>燈控制系統仿真

    現代摩比斯公司推出新一代高亮度LED燈:色散角大幅提升

    在科技日新月異的今天,每一個細微的創新都可能引領行業的變革。近日,現代摩比斯公司宣布成功研發出一種全新的LED燈,這款燈具不僅適用于紅綠燈,也完美適配于汽車尾燈,其色散角的顯著提升更是為交通照明領域帶來了新的突破。
    的頭像 發表于 10-14 16:42 ?1056次閱讀

    【星閃派物聯網開發套件體驗連載】智能交通

    感謝電子發燒友,感謝潤和軟件,提供星閃派物聯網開發套件試用。 本次試用計劃: 用星閃派物聯網開發套件,先實現本地交通燈項目,接入WiFi連上云端,本地紅綠燈狀態上傳云端,云端顯示,云端遠程控制紅綠燈
    發表于 10-05 13:00

    防反接電路、防倒灌電路、過流保護和ESP相關知識

    ,電路也不會受損,電器照樣能用。 防倒灌電路呢,它有點像交通路口紅綠燈。在一個系統中,如果有多個電源同時工作,有時候一個電源的電壓可能會高于另一個,這時候如果不加控制,電流就會從高壓往低壓流,這就
    發表于 09-15 07:29

    TomTom交通技術支持Miovision交通信號預測和車聯網(V2X) 解決方案系列

    擁堵和排放,改善公共安全。 Miovision支持的產品如奧迪的紅綠燈信息等,這項首創的技術可幫助駕駛員
    的頭像 發表于 07-02 15:40 ?1200次閱讀

    2024智慧交通路燈行業發展趨勢及市場現狀分析

    燈市場規模將達2432億元。 當下智能汽車和智慧交通路燈的數字化發展,正在從解決單一場景問題,向大規模的群體智慧轉變。再看騰訊的步伐,騰訊發力產業互聯網以來,深耕交通出行領域,致力于將交通OS、實時孿生等技術與具體場景
    的頭像 發表于 05-10 16:49 ?738次閱讀

    STM32 ST-LINK Utility 4.2燒程序,過程中ST LINK的紅綠燈一直不停閃爍,顯示燒錄成功芯片沒有反應為什么?

    用的是STM32 ST-LINK Utility 4.2燒程序,這個軟件可以識別芯片,過程中ST LINK的紅綠燈一直不停閃爍,最后顯示燒錄成功,但是芯片沒有反應
    發表于 03-20 07:35

    干貨!89C51單片機模擬交通燈控制,原理圖,仿真程序等完整資料

    是對通行時間做調整,交通管制鍵是對紅綠燈系統進行強制設置。 當系統上電或手動復位之后,默認模式下會按照斷電前程序里記錄的參數運行。若此時設置鍵按下,則進入通行時間設置狀態,數碼管上顯示原本記錄的時間并閃爍
    發表于 03-14 18:23

    揭秘 “紅綠燈倒計時” 原理

    如今,高德“紅綠燈倒計時”功能已服務遍布全國范圍內近240個城市的8萬多個紅綠燈路口,未來還將進一步拓展至更高數量級。
    的頭像 發表于 02-21 17:19 ?1909次閱讀

    創維液晶電視不開機故障維修方法

    圖1是一臺送修的創維32寸液晶電視,型號是32L28RM,故障現象是不開機,有時會開機,不開機時紅綠燈交替閃爍。
    的頭像 發表于 01-26 09:19 ?2203次閱讀
    創維液晶電視不開機故障維修方法

    【飛騰派4G版免費試用】紅綠燈項目-2飛騰派 openkylin 進行IO控制2

    | 接上文【飛騰派4G版免費試用】紅綠燈項目-2飛騰派 openkylin 進行IO控制
    發表于 01-17 19:46

    【飛騰派4G版免費試用】紅綠燈項目-2飛騰派 openkylin 進行IO控制

    接上文[【飛騰派4G版免費試用】2飛騰派 openkylin 進行IO控制-燈閃(https://bbs.elecfans.com/jishu_2405776_1_1.html) 紅綠燈項目
    發表于 01-13 22:34

    紅綠藍交替變化的原理

    紅綠藍交替變化是指通過控制紅、綠、藍三原色的不同亮度和混合比例,來呈現出各種不同的顏色效果。這種變化在許多領域都有應用,包括電子顯示、照明設計、藝術創作等等。下面將詳細介紹紅綠藍交替變化
    的頭像 發表于 01-04 09:24 ?1208次閱讀
    主站蜘蛛池模板: 久久国产亚洲精品AV麻豆| 国产精品一区二区在线播放| 91精选国产| a视频免费看| 国产99精品视频一区二区三区| 国产精品第十页| 狠狠人妻久久久久久综合九色| 久久成人亚洲| 欧美雌雄双性人交xxxx| 少女亚洲free| 亚洲日本天堂在线| 999久久精品国产| 成人亚洲视频在线观看| 国产亚洲精品久久久久苍井松| 久久精品国产免费播放| 欧美高跟镣铐bdsm视频| 无码欧美毛片一区二区三在线视频| 亚洲精品婷婷无码成人A片在线| 最新亚洲中文字幕在线观看 | 色婷婷我要去我去也| 亚洲AV国产国产久青草| 2021自产拍在线观看视频| 超熟女专门志| 极品色αv影院| 欧美最猛性XXX孕妇| 亚洲 国产 日韩 欧美 在线| 中文字幕国产视频| 国产99视频在线观看| 精品无码人妻一区二区免费AV| 欧美性受xxxx狂喷水| 亚洲AV怡红院AV男人的天堂| 1313久久国产午夜精品理论片| 高龄熟女50P| 久久天天婷婷五月俺也去| 肉动漫h黄动漫日本免费观看| 亚洲中文字幕无码一久久区 | 在线观看成人免费视频| 成人免费在线观看| 久久青青草原| 熟妇少妇任你躁在线无码| 中文字幕va一区二区三区|