大家好,今天给大家分享,一个非常实用的技巧。通过鼠标点击获取图像的坐标值,当然也可以进一步通过坐标获取 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 最新论文