<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4691字,需瀏覽 10分鐘

           ·

          2023-08-17 04:34

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

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

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

          HSV 色標(biāo)

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

          綠色色調(diào)

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

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

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

          定義繪畫(huà)上的自定義顏色

          你可以看到,除了 (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,這對(duì)我們?cè)?OpenCV 中的工作很有用。

          HSV 色錐

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

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

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

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

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

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

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

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

          2. 簡(jiǎn)化的基于顏色的分析

          3. 對(duì)光照變化的魯棒性

          4. 與人類(lèi)感知的兼容性

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

          對(duì)象遮罩

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

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

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

          每幅圖像中橙色的 RBG 成分

          因此很明顯,我們無(wú)法從 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)

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

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

          這是通過(guò)查看 HSV 色錐來(lái)完成的

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

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

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

          讓我們?cè)?Spyder 中定義它。

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

          現(xiàn)在我們定義一個(gè)遮罩來(lái)跟蹤圖像中的橙色。這是通過(guò)使用 cv2.inRange() 來(lái)完成的。我們介紹了上界和下界以及執(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()

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

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

          看起來(lái)不錯(cuò)!!

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

          完整代碼

          #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é)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

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

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(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)階。

          交流群


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


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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天操天天日天天插 | 最新高清无码免费专区 | 久久中文娱乐网 | 亚州九九色影院 | 日本中文在线 |