看代码:
import cv2 as cv
import numpy as np def separate_color(frame):
cv.imshow("原图", frame)
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV) #色彩空间转换为hsv,便于分离
lower_hsv = np.array([37, 43, 46]) #提取颜色的低值
high_hsv = np.array([77, 255, 255]) #提取颜色的高值
mask = cv.inRange(hsv, lowerb = lower_hsv, upperb = high_hsv) #下面详细介绍
cv.imshow("inRange", mask) image = "D:/Image/test1.jpg"
src = cv.imread(image)
separate_color(src) cv.waitKey(0)
效果:(这里提取的是绿色)
一、inRange()函数介绍:(OpenCV中的inRange()函数可实现二值化功能,可以同时针对多通道进行操作,使用起来非常方便!)
1.函数原型:inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)
2.参数介绍:src:输入图像, lowerb:要提取颜色在hsv色彩空间取值的低值, upperb:要提取颜色在hsv色彩空间取值的高值, 输出图
二、hsv色彩取值表: