真好用!一招轻松获取图片中鼠标点击处坐标

2021-06-08 11:33:39 浏览数 (1)

大家好,今天给大家分享,一个非常实用的技巧。通过鼠标点击获取图像的坐标值,当然也可以进一步通过坐标获取 RGB 值。

用途:

1、可用于获取 mask 区域的坐标

2、获取关键点、线坐标,便于制图等

目标:

假设目前我们的任务是希望获取车辆进入减速带时的速度,那么首先需要做的第一件事就是获取减速带的区域坐标。

思路

官方文章:https://docs.opencv.org/master/db/d5b/tutorial_py_mouse_handling.html

通过创建一个鼠标回调函数,当鼠标事件发生时执行该函数。鼠标事件可以是任何与鼠标相关的事件,如左键向下、左键向上、左键双击等。它为我们提供了每个鼠标事件的坐标(x,y)。

官方给了一些demo,用于绘制圆和矩形。

这里我们参考demo,做一定的修改,绘制点,并返回坐标即可。

代码实现

这里可以通过修改,读入图片的路径,切换到大家所需要处理的图片。

1、通过鼠标坐标的点击,即可获取坐标值

2、图片上会显示一个小点、坐标值,并在终端中显示坐标值

代码语言:javascript复制
# coding: utf-8
import cv2
import numpy as np

img = cv2.imread("test.jpg")

def on_EVENT_LBUTTONDOWN(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        xy = "%d,%d" % (x, y)
        print (xy)
        cv2.circle(img, (x, y), 1, (255, 0, 0), thickness = -1)
        cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN,
                    1.0, (0,0,0), thickness = 1)
        cv2.imshow("image", img)

cv2.namedWindow("image")
cv2.setMouseCallback("image", on_EVENT_LBUTTONDOWN)
cv2.imshow("image", img)

while(True):
    try:
        cv2.waitKey(100)
    except Exception:
        cv2.destroyWindow("image")
        break
        
cv2.waitKey(0)
cv2.destroyAllWindow()

结果:

好的,今天的分享就到这里,如果喜欢记得关注我,给我一个三连,感谢

代码语言:javascript复制
个人微信(如果没有备注不拉群!)请注明:地区 学校/企业 研究方向 昵称


下载1:何恺明顶会分享
在「AI算法与图像处理」公众号后台回复:何恺明,即可下载。总共有6份PDF,涉及 ResNet、Mask RCNN等经典工作的总结分析
下载2:终身受益的编程指南:Google编程风格指南
在「AI算法与图像处理」公众号后台回复:c  ,即可下载。历经十年考验,最权威的编程规范!
代码语言:javascript复制
下载3 CVPR2021
在「AI算法与图像处理」公众号后台回复:CVPR,即可下载1467篇CVPR 2020论文 和 CVPR 2021 最新论文

0 人点赞