--- tags: Python, Opencv --- # Python Opencv 使用 HSV 擷取特定顏色 [![hackmd-github-sync-badge](https://hackmd.io/0QgEoh3ZRlCbeFfZlzNJGA/badge)](https://hackmd.io/0QgEoh3ZRlCbeFfZlzNJGA) ## HSV 色彩對照表 ![](https://i.imgur.com/JZ5CNSm.png) > 這個對照表只是大部分範圍,要更仔細就要使用 PS 查看 HSV 數值 ## PS 的 HSV 值轉換 PS 中 > H 範圍在 0 ~ 360 。 > S 範圍在 0 ~ 1 % > V 範圍在 0 ~ 1 % Python 中 > H 範圍在 0 ~ 180 > S 範圍在 0 ~ 255 > V 範圍在 0 ~ 255 所以在Python 中就要將 ```python python_H = ps_H / 2 python_S = ps_S * 255 / 100 python_V = ps_V * 255 / 100 ``` ## 取出黃色 ```python import cv2 import numpy as np # 讀取圖片 img = cv2.imread('./image.jpg') # 圖片縮放為原本的0.5倍大小 img = cv2.resize(img, None, fx=0.5, fy=0.5) # 轉為 HSV hsv_img = cv2.cvtColor(reimg, cv2.COLOR_BGR2HSV) # 取出黃色 mask = cv2.inRange(hsv_img, (26, 43, 46), (34, 255, 255)) # 為原圖加上遮罩 masked_img = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask) # 顯示 hsv 圖片 cv2.imshow('yellow', mask) # 顯示遮罩 cv2.imshow('yellow', mask) # 顯示遮罩後的圖片 cv2.imshow('masked img', mask) cv2.waitKey(0) ``` ## BGR 通道分割 ```python (B, G, R) = cv2.split(img) ```