opencv中匯集了150多種顏色顏色空間的轉變方法,接下來只看最常用的兩種,即bgr gray 和 bgr hsv
import cv2
# color-space轉變函式
cv2.cvtcolor(input_image, flag)
# 檢視顏色空間flag
flags = [i for i in dir(cv2) if i.startswith('color_')]
print flags
'''note:
對於hsv,hue(色調)範圍為[0,180],saturation(飽和度)範圍是[0,255],value範圍是[0,255]
不同的影象處理軟體下具有不同的範圍,
如果想將其他如ps中的影象(hue範圍是[0,360])與opencv下處理影象作比較時,要做一下歸一化
'''
hsv color-space相比rgb color-space更容易表示乙個顏色,以下應用中,將提取乙個黑色(外框)和乙個綠色(內框)的物件。
(2)每一幀從bgr轉換顏色空間到hsv
(3)閾值化hsv影象,將其分別閾值化在乙個綠色和黑色的範圍內
(4)分別提取出黑色目標和藍色目標,疊加mask合成
code:
import cv2
import numpy as np
cap = cv2.videocapture('../video/vid_20190710_165704.mp4')
ret, fm_0 = cap.read()
c = 1
timef = 5
# 黑色hsv範圍
hsv_black = np.uint8([[[0,0,0],[255,180,46]]])
# 綠色bgr範圍
gbr_green = np.uint8([[[13,94,64],[40,114,84]]])
# 綠色hsv範圍,將綠色bgr轉換到hsv
hsv_green = cv2.cvtcolor(gbr_green,cv2.color_bgr2hsv)
while ret:
ret, fm = cap.read()
if ret is true:
hsv_fm = cv2.cvtcolor(fm,cv2.color_bgr2hsv)
# 範圍閾值化
mask_black = cv2.inrange(hsv_fm,hsv_black[0,0],hsv_black[0,1])
mask_green = cv2.inrange(hsv_fm, hsv_green[0, 0], hsv_green[0, 1])
# 合成
mask = cv2.addweighted(mask_black,0.5,mask_green,0.5,1)
# 只提取藍色和黑色前景
res = cv2.bitwise_and(fm,fm,mask=mask)
if c % timef == 0:
cv2.namedwindow('res',cv2.window_normal)
cv2.imshow('res',res)
cv2.namedwindow('mask', cv2.window_normal)
cv2.imshow('mask',mask)
c = c+1
k = cv2.waitkey(10) & 0xff
if k == 27:
cv2.destroyallwindows()
cap.release()
# 注:此影象沒考慮去噪過程,隨後可將去噪新增進來
結果圖:
hsv顏色體系表:
opencv顏色空間轉換
使用工具python3.5 使用包cv2,numpy 涉及函式cv2.cvtcolor cv2.inrange 在 opencv 中有 超過150 種進行顏色空間轉換的方法。但是你以後就會發現我們經常用到的也就兩種 bgr gray 和 bgr hsv。我們用到的函式是cv2.cvtcolor in...
open CV顏色空間轉換
使用工具python3.5 使用包cv2,numpy 涉及函式cv2.cvtcolor cv2.inrange import cv2 import numpy as np cap cv2.videocapture 0 while 1 獲取每一幀 ret,frame cap.read 轉換到hsv h...
OpenCV中HSV顏色空間
opencv中實現bgr顏色空間想hsv顏色空間轉換的是cvcvtcolor h通道的值範圍為 0 180 s 0 255 v 0 255 後來發現了 cv bgr2hsv full cv bgr2hsv 在轉換影象的時候是將 h 2 h 我們知道影象中色相h的取值範圍為 0 360 所以利用ope...