如何利用OpenCV進(jìn)行特征(顏色、形狀)提取
圖像處理
圖像處理所做的只是從圖像中提取有用的信息,從而減少數(shù)據(jù)量,但保留描述圖像特征的像素。
下面從圖像中提取顏色、形狀和紋理特征的方法開(kāi)始
1. 顏色
每次處理圖像項(xiàng)目時(shí),圖像的色彩空間都會(huì)成為最先探索的地方,而我們最常用的就是RGB色彩空間。那么接下來(lái)使用OpenCV,我們可以將圖像的顏色空間轉(zhuǎn)換為HSV、LAB、灰度、YCrCb、CMYK等。
a. HSV(色相飽和度值)
- 色調(diào)H:描述主波長(zhǎng),是指定顏色的通道
- 飽和度S:描述色調(diào)/顏色的純度/色調(diào)
- 值V:描述顏色的強(qiáng)度
import cv2 from google.colab.patches import cv2_imshow image = cv2.imread(image_file) hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) cv2_imshow(hsv_image)
下圖為RGB和HSV
b. LAB
- L:描述顏色的亮度,與強(qiáng)度互換使用
- A : 顏色成分范圍,從綠色到品紅色
- B:從藍(lán)色到黃色的顏色分量
import cv2 from google.colab.patches import cv2_imshow image = cv2.imread(image_file) lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2LAB) cv2_imshow(lab_image)
下圖為RGB和LAB顏色空間可視化
b. YCrCb
- Y : 伽馬校正后從 RGB 顏色空間獲得的亮度
- Cr:描述紅色 ® 分量與亮度的距離
- Cb:描述藍(lán)色 (B) 分量與亮度的距離
import cv2 from google.colab.patches import cv2_imshow image = cv2.imread(image_file) ycrcb_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb) cv2_imshow(ycrcb_image)
下圖為RGB 與 YCrCb 顏色空間
一旦我們已經(jīng)識(shí)別或探索了足夠多的圖像色彩空間,并確定我們只對(duì)單個(gè)通道感興趣,我們就可以使用*cv2.inRange()*來(lái)屏蔽不需要的像素。這在 HSV 顏色空間中尤其實(shí)用。
import cv2 from google.colab.patches import cv2_imshow # Reading the original image image_spot = cv2.imread(image_file) cv2_imshow(image_spot) # Converting it to HSV color space hsv_image_spot = cv2.cvtColor(image_spot, cv2.COLOR_BGR2HSV) cv2_imshow(hsv_image_spot) # Setting the black pixel mask and perform bitwise_and to get only the black pixels mask = cv2.inRange(hsv_image_spot, (0, 0, 0), (180, 255, 40)) masked = cv2.bitwise_and(hsv_image_spot, hsv_image_spot, mask=mask) cv2_imshow(masked)
RGB vs HSV vs Masked 圖像使用 cv2.inRange() 檢索黑點(diǎn)
2. 形狀
一旦我們充分探索了顏色特征,我們可能會(huì)在某個(gè)時(shí)候想要提取圖像中的形狀。例如,我們?nèi)蝿?wù)是找到不同類(lèi)型的杯子,而顏色不是特別重要。同樣,需要做的就是將圖像轉(zhuǎn)換為其他顏色空間,看看是否有任何顏色空間會(huì)使對(duì)象的邊緣或形狀更加突出,然后我們就可以使用cv2.finContours來(lái)檢索圖像中的所有輪廓。具體使用方式可以查看OpenCV文檔
總結(jié)
到此這篇關(guān)于如何利用OpenCV進(jìn)行特征(顏色、形狀)提取的文章就介紹到這了,更多相關(guān)OpenCV特征提取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python開(kāi)發(fā)app后端有優(yōu)勢(shì)嗎
在本篇文章里小編給大家整理的是關(guān)于app后端開(kāi)發(fā)學(xué)PHP還是Python的先關(guān)問(wèn)題內(nèi)容,需要的朋友們可以參考下。2020-06-06python中關(guān)于時(shí)間和日期函數(shù)的常用計(jì)算總結(jié)(time和datatime)
python中關(guān)于時(shí)間和日期函數(shù)有time和datatime使用介紹,需要的朋友可以參考下2013-03-03Pytho爬蟲(chóng)中Requests設(shè)置請(qǐng)求頭Headers的方法
這篇文章主要介紹了Pytho爬蟲(chóng)中Requests設(shè)置請(qǐng)求頭Headers的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python處理不同接口間參數(shù)依賴(lài)的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫(xiě)接口自動(dòng)化測(cè)試,以有效地處理不同接口之間的參數(shù)依賴(lài),并提供豐富的示例代碼,希望對(duì)大家有所幫助2024-01-01Python實(shí)現(xiàn)DDos攻擊實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)DDos攻擊的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-0210張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問(wèn)題
今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識(shí)循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語(yǔ)言編寫(xiě),非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧2021-02-02python實(shí)現(xiàn)通過(guò)隊(duì)列完成進(jìn)程間的多任務(wù)功能示例
這篇文章主要介紹了python實(shí)現(xiàn)通過(guò)隊(duì)列完成進(jìn)程間的多任務(wù)功能,結(jié)合實(shí)例形式分析了Python隊(duì)列完成進(jìn)程間的多任務(wù)以及進(jìn)程池pool相關(guān)操作技巧,需要的朋友可以參考下2019-10-10