OpenCV Python 改變顏色空間 十三

2022-06-14 11:39:07 字數 2332 閱讀 6816

opencv中有超過150種顏色空間轉換方法。但是我們將研究只有兩個最廣泛使用的,bgr↔灰色和bgr↔hsv。

對於顏色轉換,我們使用cv函式。cvtcolor(input_image, flag),其中flag決定轉換的型別。

對於bgr→灰度轉換,我們使用標誌cv.color_bgr2gray。類似地,對於bgr→hsv,我們使用標誌cv.color_bgr2hsv。要獲取其他標記,只需在python終端中執行以下命令:

>>

>

import cv2 as cv

>>

> flags =

[i for i in

dir(cv)

if i.startswith(

'color_')]

>>

>

print

( flags )

注意hsv的色相範圍為[0,179],飽和度範圍為[0,255],值範圍為[0,255]。不同的軟體使用不同的規模。因此,如果你要將opencv值和它們比較,你需要將這些範圍標準化。

現在我們知道了如何將bgr影象轉換成hsv,我們可以使用它來提取乙個有顏色的物件。在hsv中比在bgr顏色空間中更容易表示顏色。在我們的應用程式中,我們將嘗試提取乙個藍色的物件。方法如下:

轉換從bgr到hsv顏色空間

我們對hsv影象設定藍色範圍的閾值

現在單獨提取藍色物件,我們可以對影象做任何我們想做的事情。

下面是詳細注釋的**:

import cv2 as cv

import numpy as np

cap = cv.videocapture(0)

while(1

):# 讀取幀

_, frame = cap.read(

)# 轉換顏色空間 bgr 到 hsv

hsv = cv.cvtcolor(frame, cv.color_bgr2hsv)

# 定義hsv中藍色的範圍

lower_blue = np.array(

[110,50

,50])

upper_blue = np.array(

[130

,255

,255])

# 設定hsv的閾值使得只取藍色

mask = cv.inrange(hsv, lower_blue, upper_blue)

# 將掩膜和影象逐畫素相加

res = cv.bitwise_and(frame,frame, mask= mask)

cv.imshow(

'frame'

,frame)

cv.imshow(

'mask'

,mask)

cv.imshow(

'res'

,res)

k = cv.waitkey(5)

&0xff

if k ==27:

break

cv.destroyallwindows(

)

下圖顯示了對藍色物件的跟蹤:

注意影象中有一些噪點。我們將在後面的章節中看到如何刪除它們。

這是物件跟蹤中最簡單的方法。一旦學習了輪廓的功能,你就可以做很多事情,例如找到該物件的質心並使用它來跟蹤物件,僅通過將手移到相機前面以及其他許多有趣的東西就可以繪製圖表。

這是在stackoverflow.com上發現的乙個常見問題。它非常簡單,你可以使用相同的函式cv.cvtcolor()。你只需傳遞你想要的bgr值,而不是傳遞影象。例如,要查詢綠色的hsv值,請在python終端中嘗試以下命令:

>>

> green = np.uint8([[

[0,255,0

]]])

>>

> hsv_green = cv.cvtcolor(green,cv.color_bgr2hsv)

>>

>

print

( hsv_green )[[

[60255255]]

]

嘗試找到一種方法來提取多個彩色物件,例如,同時提取紅色,藍色,綠色物件。

歡迎關注磐創部落格資源彙總站:

歡迎關注pytorch官方中文教程站:

opencv中文官方文件:

Android EditText 改變邊框顏色

第一步 為了更好的比較,準備兩個一模一樣的edittext 當activity啟動時,焦點會在第乙個edittext上,如果你不希望這樣只需要寫乙個高度和寬頻為0的edittext即可避免,這裡就不這麼做了 如下 html view plain copy edittext android layou...

MapXtremE 中改變feature顏色

1.c code mapinfo.data.table table mapinfo.engine.session.current.catalog.opentable c programfiles mapinfo mapxtreme2004 maps north america usa.tab thi...

關於jquery jqgrid 改變行背景顏色

在做專案工程中,遇到過客戶要求在同一行上的兩個列值不等時,標記顏色,用於馬上定位到這一行的值不相等 如下是具體實現 首先,在jqgrid的gridcomplete中載入一下方法 gridcomplete function 資料載入完成後,如果 兩特定列值不等時,則記錄在列表中用粉紅色表示 funct...