chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

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

新機器視覺 ? 來源:CSDN技術社區(qū) ? 作者:2cy- ? 2021-10-13 09:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

轉自|Python聯(lián)盟

1.視頻讀取

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

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區(qū)域

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

截取后的roi

3.轉換hsv顏色空間

HSV顏色分量范圍

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

H: 0— 180

S: 0— 255

V: 0— 255

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

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

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

顏色調(diào)整代碼如下:

(詳細參考: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)

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

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

4.二值圖像顏色判定

因為圖像是二值的圖像,所以如果圖像出現(xiàn)白點,也就是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.顏色結果畫在圖像上

用矩形框來框選出紅綠燈區(qū)域

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區(qū)域    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)
    #因為圖像是二值的圖像,所以如果圖像出現(xiàn)白點,也就是255,那么就取他的max最大值255    red_color = np.max(red_blur)    green_color = np.max(green_blur)    #在red_color中判斷二值圖像如果數(shù)值等于255,那么就判定為red    if red_color == 255:        print('red')                        #。。。這是我經(jīng)常會混淆的坐標。。。就列舉出來記一下。。。                        #      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中判斷二值圖像如果數(shù)值等于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
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4947

    瀏覽量

    73291
  • python
    +關注

    關注

    57

    文章

    4861

    瀏覽量

    89670
  • 4K
    4K
    +關注

    關注

    2

    文章

    535

    瀏覽量

    61137
  • HSV
    HSV
    +關注

    關注

    0

    文章

    10

    瀏覽量

    2808

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】桌面系統(tǒng)功能測試-紅綠燈按鈕項目-Web控制

    )開發(fā)板試用】命令行功能測試-紅綠燈按鈕項目-Python實現(xiàn)簡單的Web服務器 桌面系統(tǒng)可以用圖形web等等控制系統(tǒng), 環(huán)境準備 EASY EAI Nano-TB(RV1126B)開發(fā)板
    發(fā)表于 12-14 18:21

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-紅綠燈按鈕項目-Python實現(xiàn)簡單的Web服務器

    0接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-紅綠燈按鈕項目性能優(yōu)化-系統(tǒng)性能、網(wǎng)絡配置、安全檢及cpu溫度采集互聯(lián)網(wǎng)在過去30年里已經(jīng)大大地改變了我們
    發(fā)表于 11-16 16:35

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-紅綠燈按鈕項目性能優(yōu)化-系統(tǒng)性能、網(wǎng)絡配置、安全檢及cpu溫度采集

    接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目 一、實驗名稱 1、開發(fā)板板載資源系統(tǒng)性能、網(wǎng)絡配置、安全檢 2:溫度
    發(fā)表于 11-05 13:48

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目-實現(xiàn)開機起動

    0接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目 Linux 起動系統(tǒng)下 init 系統(tǒng)大多數(shù) Linux 發(fā)行版
    發(fā)表于 11-03 17:25

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目

    0接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目-實現(xiàn)開機起動 EASYEAINano-TB(RV1126B)是一款專為
    發(fā)表于 11-03 10:00

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目

    Nano-TB(RV1126B)開發(fā)板,通過GPIO控制實現(xiàn)紅綠燈板的三種顏色LED燈交替閃爍功能。開發(fā)板使用SSH進行遠程控制通過WiFi連接。 硬件 EASY EAI Nano-TB
    發(fā)表于 11-02 18:34

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-燈閃

    GPIO引腳連接到* 紅綠燈板 :一個簡單的外部設備,包含紅、綠、黃三個LED燈上,以控制其色彩的變換效果。 紅綠燈紅綠燈板 3V3 接EASY EAI Nano-TB(RV1126B)開發(fā)板
    發(fā)表于 11-01 21:26

    明治案例 | 紅綠燈不再“迷糊”:色標傳感器ESE讓指示燈檢測穩(wěn)、準、快

    在電動剃須刀生產(chǎn)線的末端環(huán)節(jié),充電狀態(tài)檢測與即時包裝的銜接效率直接影響整體產(chǎn)能與出貨質(zhì)量。本文期內(nèi)容小明將聚焦某制造工廠的實際案例,解析明治ESE系列色標傳感器如何通過對指示燈顏色的精準檢測,實現(xiàn)
    的頭像 發(fā)表于 10-28 07:34 ?186次閱讀
    明治案例 | <b class='flag-5'>紅綠燈</b>不再“迷糊”:色標傳感器ESE讓指示燈<b class='flag-5'>檢測</b>穩(wěn)、準、快

    車聯(lián)網(wǎng)與智慧交通

    信號燈可以根據(jù)實時交通流量調(diào)整紅綠燈時長,有效緩解道路擁堵;智慧公交系統(tǒng)能夠讓乘客實時查看車輛到站情況;ETC電子收費系統(tǒng)大幅提升高速路的通行效率;而智慧停車則通過傳感器和物聯(lián)網(wǎng)技術,引導車主快速找到空余車位。隨著車路
    的頭像 發(fā)表于 10-24 14:59 ?347次閱讀

    海康威視全新推出大模型高階智控信號機

    紅綠燈變“聰明”的關鍵之一就在于信號機的“自適應控制”,它通過雷達、攝像機等傳感器,實時“記錄”車流變化,通過交通供需模型,自動調(diào)節(jié)紅綠燈的周期和各個方向的綠燈時長。例如哪個方向
    的頭像 發(fā)表于 09-29 17:11 ?875次閱讀

    易華錄助力廈門交警打造智慧紅綠燈

    交通信號燈是城市交通管理的重要基礎設施,是服務于產(chǎn)業(yè)發(fā)展和市民出行的溫度計。廈門市公安局交警支隊攜手易華錄持續(xù)提升信號調(diào)控技術手段,創(chuàng)新道路交通管理模式,著力推進紅綠燈“智控”能力建設
    的頭像 發(fā)表于 09-28 09:31 ?489次閱讀

    Momenta MNP記憶領航輔助駕駛系統(tǒng)輕松應對城市復雜路況

    城市通勤是無數(shù)司機每天的“必修課”。路口眼花繚亂的紅綠燈、隨處可見的臨時停車、突然闖入視野的行人或車輛,以及夜晚有限的視線和各種意外狀況……這些日常駕駛中的瑣碎現(xiàn)象,總在不經(jīng)意間消耗著駕駛者的精力。
    的頭像 發(fā)表于 07-07 16:33 ?1126次閱讀

    使用PLC實現(xiàn)紅綠燈控制示例

    如圖為一個紅綠燈的控制時序圖,啟動信號導通后,紅綠燈程序開始動作。
    的頭像 發(fā)表于 05-29 09:45 ?1264次閱讀
    使用PLC實現(xiàn)<b class='flag-5'>紅綠燈</b>控制示例

    【ELF 2學習板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目

    接上文[【ELF 2學習板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目(https://bbs.elecfans.com/jishu_2475305_1_1.html) 紅綠燈按鈕
    發(fā)表于 02-06 15:39

    【ELF 2學習板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目

    ) 紅綠燈項目 硬件 ELF 2學習板 :一款用于嵌入式系統(tǒng)學習的開發(fā)板。 紅綠燈板 :一個簡單的外部設備,包含紅、綠、黃三個LED燈。 連接1* ELF 2學習板 紅綠燈板 連接2 紅綠燈
    發(fā)表于 02-06 11:55