根据官方文档实现python cv2 鼠标事件
但是画出的矩形是填充的,并不是轮廓
修改下代码只显示鼠标弹起的坐标大小。
import cv2
import numpyas np
drawing =False # true if mouse is pressed
mode =True # if True, draw rectangle. Press 'm' to toggle to curve
ix, iy = -1, -1
# mouse callback function
def draw_circle(event, x, y, flags, param):
global ix, iy, drawing, mode
# print(flags)
if event == cv2.EVENT_LBUTTONDOWN:
drawing =True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing ==True:
if mode ==True:
# pass
tmp=img.copy()
cv2.rectangle(tmp, (ix, iy), (x, y), (0, 255, 0), 1)
cv2.imshow('image', tmp)
else:
cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
elif event == cv2.EVENT_LBUTTONUP:
drawing =False
if mode ==True:
cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 1)
else:
cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_circle)
cv2.imshow('image', img)
while (1):
k = cv2.waitKey(1) &0xFF
if k ==ord('m'):
mode =not mode
elif k ==27:
break
cv2.destroyAllWindows()