| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 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
|