You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenCV在鼠标光标正下方显示像素坐标及相关信息

OpenCV 原生实现光标下方显示像素信息方案

结论

OpenCV 没有单独的内置函数直接实现光标跟随的悬浮提示功能,但不需要额外引入第三方GUI库,仅用OpenCV自带的API组合即可实现该需求。


实现核心依赖的OpenCV原生API

  • cv2.setMouseCallback():监听鼠标移动、点击事件,实时获取光标坐标及对应像素信息
  • cv2.putText():将坐标、像素值等信息绘制到图像上
  • cv2.imshow() + cv2.waitKey():维持窗口事件循环,刷新显示内容

实现逻辑

  1. 定义变量存储实时鼠标坐标、对应像素值等信息,鼠标事件触发时更新变量
  2. 每次窗口刷新前,复制原始图像作为绘制底图,避免文字残留到原图
  3. 在当前光标坐标的下方(可给Y轴加15~20像素偏移,避免遮挡光标)绘制文字信息
  4. 刷新窗口显示绘制后的图像

示例代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:00:00