看代碼:
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色彩取值表: