main.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import cv2
  2. img_path = 'qingche.jpg'
  3. bgr_img = cv2.resize(cv2.imread(img_path), (512, 512))
  4. if bgr_img is None:
  5. raise ValueError(f"无法读取图像: {img_path}")
  6. b_channel, g_channel, r_channel = cv2.split(bgr_img)
  7. def mouse_callback(event, x, y, flags, param):
  8. """鼠标回调函数:点击时显示灰度值"""
  9. if event == cv2.EVENT_LBUTTONDOWN:
  10. # 获取灰度值(灰度图中直接取值)
  11. img = param.get('img')
  12. window = param.get('window')
  13. gray_value = img[y, x]
  14. # 在彩色原图的副本上显示文本
  15. text = f'Gray: {gray_value}'
  16. cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2)
  17. cv2.imshow(window, img)
  18. # 创建窗口并绑定回调函数
  19. for pic, name in [(b_channel, 'B Channel'),(g_channel, 'G Channel'),(r_channel, 'R Channel')]:
  20. img = pic
  21. window = name
  22. params = {
  23. 'img':img,
  24. 'window':window
  25. }
  26. cv2.namedWindow(window)
  27. cv2.setMouseCallback(window, mouse_callback, param=params)
  28. # 显示图像并等待退出
  29. while True:
  30. cv2.imshow('B Channel', b_channel)
  31. cv2.imshow('G Channel', g_channel)
  32. cv2.imshow('R Channel', r_channel)
  33. cv2.imshow('rgb', bgr_img)
  34. key = cv2.waitKey(1) & 0xFF
  35. if key == ord('q') or key == 27: # 按'q'或ESC键退出
  36. break
  37. cv2.destroyAllWindows()
  38. pass