import cv2
moving = False
upper_H, upper_S, upper_V = 0, 0, 0
lower_H, lower_S, lower_V = 255, 255, 255
def get_HSV(event, x, y, flags, param): # 鼠标回调函数
global upper_H, upper_S, upper_V # 引用全局变量
global lower_H, lower_S, lower_V, moving
if event == cv2.EVENT_LBUTTONDOWN: # 左键按下事件
moving = True
[upper_H, upper_S, upper_V] = img[y, x]
[lower_H, lower_S, lower_V] = img[y, x]
elif event == cv2.EVENT_MOUSEMOVE: # 鼠标移动事件
if flags == cv2.EVENT_FLAG_LBUTTON and moving == True: # 左键按下状态
upper_H = img[y, x, 0] if img[y, x, 0] > upper_H else upper_H
lower_H = img[y, x, 0] if img[y, x, 0] < lower_V else lower_H
upper_S = img[y, x, 1] if img[y, x, 1] > upper_S else upper_S
lower_S = img[y, x, 1] if img[y, x, 1] < upper_S else upper_S
upper_V = img[y, x, 2] if img[y, x, 2] > upper_V else upper_V
lower_V = img[y, x, 2] if img[y, x, 2] < lower_V else lower_V
elif event == cv2.EVENT_LBUTTONUP:
moving = False
upper = [upper_H, upper_S, upper_V]
lower = [lower_H, lower_S, lower_V]
print("upper:",upper,"\nlower:",lower)
img_origin = cv2.imread(r"C:\Users\13560\Desktop\1699413166600.jpg")
img=cv2.cvtColor(img_origin,cv2.COLOR_BGR2HSV)
cv2.namedWindow("img",cv2.WINDOW_NORMAL)
cv2.resizeWindow("img",img.shape[1],img.shape[0])
cv2.setMouseCallback("img", get_HSV)
while True:
cv2.imshow("img", img_origin)
if cv2.waitKey(1) == ord('q'): # 按q退出程序
break
cv2.destroyAllWindows()
效果: