import cv2img = cv2.imread('xxa.jpeg')
#轉換為灰度圖 cv2.cvtcolor()用來進行顏色模型轉換,引數1是要轉換的,引數2是轉換模式
img_gray = cv2.cvtcolor(img,cv2.color_bgr2gray)
#展示兩種
cv2.imshow('img',img)
cv2.imshow('gray',img_gray)
cv2.waitkey(0)
cv2.cvtcolor()
用來進行顏色模型轉換,引數1是要轉換的,引數2是轉換模式,color_bgr2gray
表示bgr→gray,可用下面的**顯示所有的轉換模式:
flags = [i for i in dir(cv2) if i.startswith('color_')]print(flags)
hsv是乙個常用於顏色識別的模型,相比bgr更易區分顏色,轉換模式用color_bgr2hsv
表示。
經驗之談:
opencv中色調h範圍為[0,179],飽和度s是[0,255],明度v是[0,255]。雖然h的理論數值是0°~360°,但8位影象畫素點的最大值是255,所以opencv中除以了2,某些軟體可能使用不同的尺度表示,所以同其他軟體混用時,記得歸一化。
步驟:從bgr轉換到hsv
提取藍色範圍的物體
只顯示藍色物體
原碼:顏色如何獲取?
其中,bitwise_and()
函式暫時不用管,後面會講到。那藍色的hsv值的上下限lower和upper範圍是怎麼得到的呢?其實很簡單,我們先把標準藍色的bgr值用cvtcolor()
轉換下:
blue = np.uint8([[[255, 0, 0]]])結果是[120, 255, 255],所以,我們把藍色的範圍調整成了上面**那樣。hsv_blue = cv2.cvtcolor(blue, cv2.color_bgr2hsv)
print(hsv_blue) # [[[120 255 255]]]
import cv2import numpy as np
#開啟攝像頭
capture = cv2.videocapture(0)
#藍色範圍
lower_blue = np.array([100,110,110])
upper_blue = np.array([130,255,255])
#紅色範圍
lower_red = np.array([0,110,110])
upper_red = np.array([10,255,255])
#綠色範圍
lower_green = np.array([50,110,110])
upper_green = np.array([70,255,255])
while(true):
ret,frame = capture.read()
hsv = cv2.cvtcolor(frame,cv2.color_bgr2hsv)
mask = cv2.inrange(hsv, lower_blue, upper_blue) + cv2.inrange(hsv, lower_red, upper_red) + cv2.inrange(hsv, lower_green, upper_green)
res = cv2.bitwise_and(frame, frame, mask=mask)
cv2.imshow('res',res)
if cv2.waitkey(1) == ord('q'):
break
《OpenCV》 顏色空間
opencv中匯集了150多種顏色顏色空間的轉變方法,接下來只看最常用的兩種,即bgr gray 和 bgr hsv import cv2 color space轉變函式 cv2.cvtcolor input image,flag 檢視顏色空間flag flags i for i in dir cv...
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為轉換型別。跟蹤特定顏色的物體例項 我們還需要了解,根據閾值...