OpenCV學習筆記 5 顏色空間轉換

2022-08-27 04:36:07 字數 1686 閱讀 4613

1.轉換顏色空間

opencv中有超過150種進行顏色空間轉化的方法,但是實際上經常用到的也就兩種:bgr<->gray,bgr<->hsv

要用的函式是cv2.cvtcolor(input_img,flag)flag就是轉換型別

cv2.color_bgr2gray 就是bgr<->gray轉換

cv2.color_bgr2hsv 就是bgr<->hsv的轉化

(介紹一下hsv格式,h指色彩/色度,取值[0,179],s是飽和度[0,255],v是亮度[0,255]。不同軟體使用的值可能不同,所以當需要拿opencv的hsv值與別的軟體的hsv值進行對比時要注意歸一化)

也可以用一下**獲得所有可用的flag

import cv2

flags = [i for i in dir(cv2) if i.startswith('color_')]

print(flags)

2.實現物體的跟蹤

在知道如何將bgr轉換到hsv後,就可以利用這一點來提取帶有某個特定顏色的物體。在hsv的顏色空間中要比bgr空間中個更容易表示某乙個特定顏色。我們先嘗試提取乙個藍色的物體,步驟如下:

將影象轉化到hsv空間

設定hsv閾值到藍色範圍

獲取藍色物體,還可以做更多的事

**如下:

# -*- coding:utf-8 -*-

import numpy as np

import cv2

cap = cv2.videocapture(0)

while true:

ret,frame = cap.read()

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

#設定藍色閾值範圍

lower_blue = np.array([110,50,50])

upper_blue = np.array([130,255,255])

#根據閾值構建掩碼

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

#對原影象和掩碼進行and運算

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

#顯示影象

cv2.imshow('frame',frame)

cv2.imshow('mask',mask)

cv2.imshow('res',res)

k = cv2.waitkey(5)

if k == 27:

break

cv2.destroyallwindows()

3. 怎麼找到想要的顏色的閾值範圍

其實就是巧妙利用cvtcolor這個函式。比如要找乙個綠色的hsv值:

import numpy as np

import cv2

#先建立的乙個綠色的畫素點,注意此時是bgr

green = np.uint8([[[0,255,0]]])#這裡必須用三層括號,對應影象矩陣,影象行,畫素點bgr值

#然後用函式轉換即可獲得想要的閾值

hsv_green = cv2.cvtcolor(green,cv2.color_bgr2hsv)

print( hsv_green)

#然後使用上下浮動乙個範圍(如100)來作為上下閾值

opencv學習筆記 hsv顏色空間

1.rgb模型。三維座標 原點到白色頂點的中軸線是灰度線,r g b三分量相等,強度可以由三分量的向量表示。用rgb來理解色彩 深淺 明暗變化 色彩變化 三個座標軸rgb最大分量頂點與黃紫青ymc色頂點的連線 深淺變化 rgb頂點和cmy頂點到原點和白色頂點的中軸線的距離 明暗變化 中軸線的點的位置...

Opencv學習筆記 顏色空間轉換

轉換顏色空間 我們常用的顏色空間轉換就兩種 bgr gray cv2.color bgr2gray 和bgr hsv cv2.color bgr2hsv 用到的函式是 cv2.cvtcolor imput image,flag 其中flag為轉換型別。跟蹤特定顏色的物體例項 我們還需要了解,根據閾值...

OpenCV學習筆記(四) 顏色空間轉換

在opencv中使用cv cvtcolor inputarray src,outputarray dst,int code,int dstcn 0 進行顏色空間的轉換 src和dst分別為輸入影象和輸出影象 code是個掩碼,代表不同的轉換方式 dstcn是輸出影象的通道數,預設0為與輸入影象相同 ...