【opencv-python使用鼠标点击图片显示该点坐标和像素值】

注:本篇仅用以记录本人日常学习内容📙

OpenCV的鼠标操作

实现获取像素点的功能主要基于OpenCV的内置函数cv2.setMouseCallback(),即鼠标事件回调

setMouseCallback(winname, onMouse,userdata=0)

winname: 接收鼠标事件的窗口名称
onMouse: 处理鼠标事件的回调函数指针
userdata: 传给回调函数的用户数据

🌈我们来看看可以处理的鼠标事件有哪些:

事件宏定义触发鼠标事件的操作
EVENT_MOUSEMOVE鼠标在窗口上移动
EVENT_LBUTTONDOWN鼠标左键单击
EVENT_RBUTTONDOWN鼠标右键单击
EVENT_MBUTTONDOWN鼠标中键单击
EVENT_LBUTTONUP释放鼠标左键
EVENT_RBUTTONUP释放鼠标右键
EVENT_MBUTTONUP释放鼠标中键
EVENT_LBUTTONDBLCLK鼠标左键双击
EVENT_RBUTTONDBLCLK鼠标右键双击
EVENT_MBUTTONDBLCLK鼠标中键双击
EVENT_MOUSEWHEEL鼠标滚轮向前或向后滚动
EVENT_MOUSEHWHEEL鼠标水平滚轮向前或向后滚动

应用

代码实现:鼠标点击图片时,读取当前鼠标对应位置的像素值(顺序为BGR),在鼠标所在位置的左上角显示当前坐标值和像素值;鼠标移动时,旧的文本框消失

import cv2
import numpy as np

img = cv2.imread('E:/pypy/lenna.bmp')#读取图片
font_face,font_scale,thickness=cv2.FONT_HERSHEY_SIMPLEX,0.5,1
#鼠标交互
def mouseHandler(event,x,y,flags,param):
    points = (x,y)
    global imgCopy
    #鼠标左键双击事件
    if event == cv2.EVENT_LBUTTONDBLCLK:
    	#输出坐标
        print(x,y)
        #拷贝一张与原图像格式相同的新图像
        imgCopy = img.copy()
        #拼接文字
        text = '['+str(x)+','+str(y)+']'+str(img[x,y])
        #读取文字(宽,高),下基线
        (t_w,t_h),baseLine = cv2.getTextSize(text,font_face,font_scale,thickness)
        #在鼠标当前位置的左上角显示文字
        cv2.putText(imgCopy,text,(x-t_w,y),font_face,font_scale,(125,125,125))
        cv2.imshow('win',imgCopy)
    #鼠标移动事件
    elif event == cv2.EVENT_MOUSEMOVE:
    	#显示原图片能使文本框消失
        cv2.imshow('win',img)

cv2.namedWindow('win')
#窗口与回调函数绑定
cv2.setMouseCallback('win',mouseHandler)
cv2.imshow('win',img)
cv2.waitKey()

效果图✨

在这里插入图片描述

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值