1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        使用OpenCV進(jìn)行目標(biāo)提取詳細(xì)教程(附python代碼演練)

        共 4691字,需瀏覽 10分鐘

         ·

        2023-08-17 04:34

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        今天的文章將討論并指導(dǎo)你識別圖像中的對象,使用 OpenCV 對這些對象進(jìn)行遮罩處理。讓我們開始吧!

        HSV 色標(biāo)

        請花一點(diǎn)時(shí)間觀察下面的圖片。每個(gè)圖塊似乎是不同的顏色,對吧?但是有一個(gè)有趣的地方:如果我們仔細(xì)思考,實(shí)際上可以將它們都?xì)w為綠色。然而,如果我們仔細(xì)觀察,我們會注意到它們是不同的綠色調(diào)。這是怎么回事呢?

        綠色色調(diào)

        盡管這些瓷磚具有相同的總體顏色,但它們有不同的組成部分,構(gòu)成了它們各自的特定綠色調(diào)。正如我們之前討論的那樣,這些組成部分被稱為紅色、綠色和藍(lán)色(RGB)。因此,雖然它們都屬于綠色類別,但它們的RGB組合是不同的,從而形成我們觀察到的不同綠色調(diào)。

        但是,請等一下,這背后是否還有更多的東西?這個(gè)有趣的現(xiàn)象背后是否還有其他原因?確實(shí)如此!

        你以前一定在畫圖軟件中見過這個(gè)選項(xiàng)卡。

        定義繪畫上的自定義顏色

        你可以看到,除了 (R)ed、(G)reen、(B)lue 之外,還有 3 個(gè)參數(shù),分別是 (H)ue、(S)at 和 (L)um(HSL 色調(diào))。

        由于 HSL 和 HSV,我們可以實(shí)現(xiàn)如此多種色調(diào)。HSV 代表色相、飽和度和值。讓我們談?wù)?HSV,這對我們在 OpenCV 中的工作很有用。

        HSV 色錐

        H = 色調(diào):當(dāng)我們談?wù)撋{(diào)時(shí),我們談?wù)摰氖亲罴兇獾念伾问健O胂肽阍诓屎缰锌吹降念伾t色、橙色、黃色、綠色、藍(lán)色、靛藍(lán)和紫色。每一種都是不同的色調(diào),代表特定的光波長。

        色調(diào)的范圍是 0 到 360 度。

        S = 飽和度:飽和度是指顏色的鮮艷程度和強(qiáng)度。高度飽和的顏色鮮艷而豐富,而不飽和的顏色則顯得更加柔和或淺色。飽和度賦予顏色深度和影響力。

        飽和度的范圍為 0–1(或 0–255)。

        V = 值:顏色值與顏色的亮度或暗度有關(guān)。它由物體反射或吸收的光量決定。高值的顏色是亮的,而低值的顏色是暗的。值在創(chuàng)造對比和增加視覺構(gòu)圖的深度方面起著至關(guān)重要的作用。

        值的范圍為 0–1(或 0–255)。

        讓我們了解為什么需要將 BGR 圖像轉(zhuǎn)換為 HSV 顏色。

        1. 改進(jìn)的顏色處理

        2. 簡化的基于顏色的分析

        3. 對光照變化的魯棒性

        4. 與人類感知的兼容性

        現(xiàn)在我們將了解如何在 Spyder OpenCV 中使用 HSV 圖像。

        對象遮罩

        假設(shè)你有 3 張車牌照。

        我們正在嘗試提取這些車輛的車牌號。我們可以用 BGR 圖像來實(shí)現(xiàn)嗎?

        我們當(dāng)然不能。這背后的原因是,我們在這里看到的橙色/黃色是由 (R)ed、(G)reen、(B)lue 的不同成分組成的,并且它們不是恒定的。此外,圖像之間的亮度、飽和度和曝光度也完全不同。

        每幅圖像中橙色的 RBG 成分

        因此很明顯,我們無法從 BGR 圖像中提取某種顏色。我們需要將此 BGR 圖像轉(zhuǎn)換為 HSV 圖像。讓我們看看如何做到這一點(diǎn)。

        #import necessary libraries
        import cv2
        import numpy as np
        import matplotlib.pyplot as plt

        #using opencv to read an image
        #BGR Image
        plate_image_1 = cv2.imread("C:/users/public/pictures/numberp_1.png")

        讓我們想象一下這個(gè)plate_image_1。

        cv2.namedWindow("BGR Image", cv2.WINDOW_NORMAL);
        cv2.imshow("BGR Image",plate_image_1);

        cv2.waitKey(0) & 0xFF 
        cv2.destroyAllWindows()

        現(xiàn)在讓我們將此plate_image_1 轉(zhuǎn)換為HSV 格式。為此,我們使用cv2.cvtColor() 。我們可以使用此函數(shù)將 BGR/RGB 轉(zhuǎn)換為 HSV、RGB 轉(zhuǎn)換為 BGR、在 RGB/BGR 和灰度之間轉(zhuǎn)換以及更多選項(xiàng)。

        HSV_im_1 = cv2.cvtColor(plate_image_1,cv2.COLOR_BGR2HSV)

        讓我們想象一下這個(gè) HSV 圖像。

        使用 OpenCV 將 BGR 圖像轉(zhuǎn)換為 HSV 色標(biāo)

        這對我們來說確實(shí)很奇怪,我們將看看如何從中提取橙色/黃色。

        之前我們討論過圖像之間的亮度、飽和度和曝光完全不同。為了解決這個(gè)問題,我們?yōu)橐崛〉念伾x了一個(gè)范圍。準(zhǔn)確地說,我們按照自己的意愿為某種顏色定義了上邊界和下邊界。

        這是通過查看 HSV 色錐來完成的

        首先,我們確定色相的范圍。色調(diào)范圍從 0 到 360。每 30 度我們就會得到一種不同的顏色。讓我們看看它的橙色。

        通過粗略估計(jì) 15-20 度的下色相和 40-50 度的上色相,我們可以清楚地確定包含橙色每種色調(diào)的范圍。

        對于飽和度和明度,我們獲得從 0 到 1 的整個(gè)范圍,以適應(yīng)圖像中的全部亮度變化。這樣可以準(zhǔn)確表示色譜內(nèi)較亮或較暗的色調(diào)。

        讓我們在 Spyder 中定義它。

        Orange_UB = np.array([40,255,255])
        Orange_LB = np.array([20,0,0])

        現(xiàn)在我們定義一個(gè)遮罩來跟蹤圖像中的橙色。這是通過使用 cv2.inRange() 來完成的。我們介紹了上界和下界以及執(zhí)行遮罩所需的圖像。

        mask = cv2.inRange(HSV_im_1,Orange_LB,Orange_UB)

        讓我們想象一下這個(gè)遮罩。

        cv2.namedWindow("HSV Orange masked", cv2.WINDOW_NORMAL);
        cv2.imshow("HSV Orange masked",mask);

        cv2.waitKey(0) & 0xFF 
        cv2.destroyAllWindows()

        就快到了!!我們可以幾乎清楚地看到車牌,但也有其他不必要的像素被掩蓋。我們?nèi)绾蝺?yōu)化我們的遮罩?我們需要改變飽和度和值的范圍,直到我們得到一個(gè)令人滿意的遮罩。

        差不多了!讓我們對其進(jìn)行更多微調(diào)。

        看起來不錯??!

        這就是我們從圖像中提取特定顏色(范圍)的對象的方法。

        完整代碼

        #import necessary libraries
        import cv2
        import numpy as np
        import matplotlib.pyplot as plt

        #using opencv to read an image #BGR Image
        plate_image_1 = cv2.imread("C:/users/public/pictures/numberp_1.png")

        #converting BGR to HSV
        HSV_im_1 = cv2.cvtColor(plate_image_1,cv2.COLOR_BGR2HSV)

        #defining HSV range
        Orange_UB = np.array([40,255,245])
        Orange_LB = np.array([20,55,180])

        #masking
        mask = cv2.inRange(HSV_im_1,Orange_LB,Orange_UB)

        #visualizing
        cv2.namedWindow("HSV Orange masked", cv2.WINDOW_NORMAL);
        cv2.imshow("HSV Orange masked",mask);

        cv2.waitKey(0) & 0xFF 
        cv2.destroyAllWindows()
            
        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 1249
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            最新黄色在线 | 小早川怜子一区二区 | 日本韩国三级黄色片 | 最近最好的2019中文 | 护士娇妻被淫记 | 91免费版污 | 美女骚逼被操舒服网站 | 18禁黄色成人网站 | 理论片免费一区 | 免费人成视频在线观看视频 |