- 定义鼠标事件,用于获取鼠标点击信息
还有其他的触发,例如移动,双击,还可以设置按下去的时候还是弹起来的时候。
cv.setMouseCallback(windowname, onMouse)
def onMouse(event, args[], flags, param)
- 画圈,在点击的地方画圈
cv.circle(temp_img, (x, y), 10, (102, 217, 239), -1)
- 关闭图片窗口
cv.destroyAllWindows()
def SetPoints(windowname, img):
"""
输入图片,打开该图片进行标记点,返回的是标记的几个点的字符串
"""
print('(提示:单击需要标记的坐标,Enter确定,Esc跳过,其它重试。)')
points = []
def onMouse(event, x, y, flags, param):
if event == cv.EVENT_LBUTTONDOWN:
cv.circle(temp_img, (x, y), 10, (102, 217, 239), -1)
points.append([x, y])
cv.imshow(windowname, temp_img)
temp_img = img.copy()
cv.namedWindow(windowname)
cv.imshow(windowname, temp_img)
cv.setMouseCallback(windowname, onMouse)
key = cv.waitKey(0)
if key == 13: # Enter
print('坐标为:', points)
del temp_img
cv.destroyAllWindows()
return str(points)
elif key == 27: # ESC
print('跳过该张图片')
del temp_img
cv.destroyAllWindows()
return
else:
print('重试!')
return SetPoints(windowname, img)