43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
import cv2
|
||
import numpy as np
|
||
|
||
|
||
# 滑动条的回调函数,获取滑动条位置处的值
|
||
def empty(a):
|
||
h_min = cv2.getTrackbarPos("Hue Min", "TrackBars")
|
||
h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")
|
||
s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")
|
||
s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")
|
||
v_min = cv2.getTrackbarPos("Val Min", "TrackBars")
|
||
v_max = cv2.getTrackbarPos("Val Max", "TrackBars")
|
||
print(h_min, h_max, s_min, s_max, v_min, v_max)
|
||
return h_min, h_max, s_min, s_max, v_min, v_max
|
||
|
||
|
||
path = './data/004.png'
|
||
# 创建一个窗口,放置6个滑动条
|
||
cv2.namedWindow("TrackBars")
|
||
cv2.resizeWindow("TrackBars", 640, 240)
|
||
cv2.createTrackbar("Hue Min", "TrackBars", 0, 120, empty)
|
||
cv2.createTrackbar("Hue Max", "TrackBars", 19, 120, empty)
|
||
cv2.createTrackbar("Sat Min", "TrackBars", 110, 255, empty)
|
||
cv2.createTrackbar("Sat Max", "TrackBars", 240, 255, empty)
|
||
cv2.createTrackbar("Val Min", "TrackBars", 153, 255, empty)
|
||
cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty)
|
||
|
||
while True:
|
||
img = cv2.imread(path)
|
||
imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
|
||
# 调用回调函数,获取滑动条的值
|
||
h_min, h_max, s_min, s_max, v_min, v_max = empty(0)
|
||
lower = np.array([h_min, s_min, v_min])
|
||
upper = np.array([h_max, s_max, v_max])
|
||
# 获得指定颜色范围内的掩码
|
||
mask = cv2.inRange(imgHSV, lower, upper)
|
||
# 对原图图像进行按位与的操作,掩码区域保留
|
||
imgResult = cv2.bitwise_and(img, img, mask=mask)
|
||
|
||
cv2.imshow("Mask", mask)
|
||
cv2.imshow("Result", imgResult)
|
||
|
||
cv2.waitKey(1) |