前言
之前用python从没有写过界面,这次涉及到需要获取鼠标单击图片像素的位置点,我还以为我得学一下诸如pyqt、tkinter的界面库,后来百度了一下发现OpenCV就能实现此功能。
思路
使用OpenCV,定义一个供setMouseCallback使用的回调函数mouse,这个回调函数在捕获到鼠标左键点击事件(cv2.EVENT_LBUTTONDOWN)时,获取点击的像素点坐标,并绘制一个实心的圆且显示出坐标。
代码
import cv2
def mouse(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
xy = "%d,%d" % (x, y)
cv2.circle(img, (x, y), 1, (255, 255, 255), thickness = -1)
cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN,
1.0, (255, 255, 255), thickness = 1)
cv2.imshow("image", img)
img = cv2.imread("1.jpg")
cv2.namedWindow("image")
cv2.imshow("image", img)
cv2.resizeWindow("image", 800, 600)
cv2.setMouseCallback("image", mouse)
cv2.waitKey(0)
cv2.destroyAl