如何使用OpenCV在鼠标光标正下方显示像素坐标及相关信息
OpenCV 原生实现光标下方显示像素信息方案
结论
OpenCV 没有单独的内置函数直接实现光标跟随的悬浮提示功能,但不需要额外引入第三方GUI库,仅用OpenCV自带的API组合即可实现该需求。
实现核心依赖的OpenCV原生API
cv2.setMouseCallback():监听鼠标移动、点击事件,实时获取光标坐标及对应像素信息cv2.putText():将坐标、像素值等信息绘制到图像上cv2.imshow()+cv2.waitKey():维持窗口事件循环,刷新显示内容
实现逻辑
- 定义变量存储实时鼠标坐标、对应像素值等信息,鼠标事件触发时更新变量
- 每次窗口刷新前,复制原始图像作为绘制底图,避免文字残留到原图
- 在当前光标坐标的下方(可给Y轴加15~20像素偏移,避免遮挡光标)绘制文字信息
- 刷新窗口显示绘制后的图像
示例代码
import cv2 import numpy as np # 全局变量存储鼠标信息 mouse_x, mouse_y = 0, 0 pixel_info = "" img = None def mouse_callback(event, x, y, flags, param): global mouse_x, mouse_y, pixel_info, img mouse_x, mouse_y = x, y # 获取当前坐标的像素值(BGR格式) b, g, r = img[y, x] pixel_info = f"({x},{y}) R:{r} G:{g} B:{b}" if __name__ == "__main__": # 读取你的图像 img = cv2.imread("test.jpg") cv2.namedWindow("Image") cv2.setMouseCallback("Image", mouse_callback) while True: # 复制底图避免文字残留 draw_img = img.copy() # 在光标下方绘制文字 cv2.putText(draw_img, pixel_info, (mouse_x, mouse_y + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) cv2.imshow("Image", draw_img) # 按ESC退出 if cv2.waitKey(1) & 0xFF == 27: break cv2.destroyAllWindows()
优化提示
如果文字和背景对比度低看不清,可以先用cv2.rectangle()在文字位置绘制一个半透明白色背景,再叠加文字,该功能也是OpenCV原生支持,不需要额外依赖。
内容的提问来源于stack exchange,提问作者eeyvee
相关产品推荐
相关产品推荐

