import cv2 img_path = 'qingche.jpg' bgr_img = cv2.resize(cv2.imread(img_path), (512, 512)) if bgr_img is None: raise ValueError(f"无法读取图像: {img_path}") b_channel, g_channel, r_channel = cv2.split(bgr_img) def mouse_callback(event, x, y, flags, param): """鼠标回调函数:点击时显示灰度值""" if event == cv2.EVENT_LBUTTONDOWN: # 获取灰度值(灰度图中直接取值) img = param.get('img') window = param.get('window') gray_value = img[y, x] # 在彩色原图的副本上显示文本 text = f'Gray: {gray_value}' cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2) cv2.imshow(window, img) # 创建窗口并绑定回调函数 for pic, name in [(b_channel, 'B Channel'),(g_channel, 'G Channel'),(r_channel, 'R Channel')]: img = pic window = name params = { 'img':img, 'window':window } cv2.namedWindow(window) cv2.setMouseCallback(window, mouse_callback, param=params) # 显示图像并等待退出 while True: cv2.imshow('B Channel', b_channel) cv2.imshow('G Channel', g_channel) cv2.imshow('R Channel', r_channel) cv2.imshow('rgb', bgr_img) key = cv2.waitKey(1) & 0xFF if key == ord('q') or key == 27: # 按'q'或ESC键退出 break cv2.destroyAllWindows() pass