|
- import cv2
- import numpy as np
- # 如何找到hsv空间中某颜色的范围以便分割
- # BGR
- # green = np.uint8([0, 255, 0])
- green = np.uint8([[[255, 0, 0]]])
- # HWC
- print(green.shape)
- hsv_green = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
- print(hsv_green)
- # 结果是[[[ 60 255 255]]]
- # 现在以 [H-10, 100,100] 到 [H+10, 255, 255] 作为范围 颜色过滤
- # 注意不要忘记hsv本来的取值范围
- # 根据HSV模型,
- # 彩色图像的色调(H)在8bit下是(0-180)三基色的值大概是红(0),黄(30),绿(60),青(90),蓝(120)
- # 饱和度(S)的范围是(0-255),明度(V)的范围是(0-255)
复制代码
- # 设定蓝色的阈值
- lower_blue = np.array([110, 100, 100])
- upper_blue = np.array([130, 255, 255])
- # 丢弃蓝色的背景 干扰
- hsv = cv2.cvtColor(crop_img, cv2.COLOR_BGR2HSV)
- mask = cv2.inRange(hsv, lower_blue, upper_blue)
- # 二值化mask
- _, mask = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY_INV)
- # mask = 255 - mask
- res = cv2.bitwise_and(crop_img, crop_img, mask=mask)
复制代码
|
|