OpenCV基於python改變顏色空間

2021-10-11 05:33:57 字數 2122 閱讀 2775

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

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

對於bgr→gray轉換,我們使用標誌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值和它們比較,你需要將這些範圍標準化。
下面是詳細注釋的**:

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]]

]

基於python的opencv教程

第一次寫部落格,學習是要有輸入與輸出的,所謂教學相長。所以我想試著自己寫乙份教程,算是對自己的學習總結吧,部落格的排版比較直男,請湊合看吧。首先建議的ide是pycharm,opencv的庫直接pip安裝就好,最好大家有一定的python基礎。第一部分是關於圖象讀取和儲存。import cv2imp...

基於python的opencv學習

dst cv2.sobel src,ddept,dx,dy,ksize ddepth 影象的深度,一般設為 1ksize sobel運算元的大小 白到黑是正數,黑到白是負數,所有的負數都會被截斷為0,因此要使用convertscaleabs取絕對值2 拉普拉斯金字塔 1 低通濾波 2 縮小尺寸pyr...

基於Python的OpenCV人臉檢測

注意 本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格 基於opencv tensorflow keras實現人臉識別 提前做的準備 1 和說明 import cv2 as cv import numpy as np defface detect demo 人臉檢測函式 gray cv.cvt...