import cv2
import numpy as np
is_drawing = False
ix = -1
iy = -1
blank_image = np.zeros([512, 512, 3], dtype=np.uint8)
def draw_rectangle(event, x, y, flags, param):
global is_drawing, ix, iy
if event == cv2.EVENT_LBUTTONDOWN:
is_drawing = True
ix = x
iy = y
elif event == cv2.EVENT_LBUTTONUP:
is_drawing = False
cv2.rectangle(img=blank_image, pt1=(ix, iy), pt2=(x, y), color=(255, 0, 0), thickness=-1)
ix = -1
iy = -1
elif event == cv2.EVENT_MOUSEMOVE:
if is_drawing:
cv2.rectangle(img=blank_image, pt1=(ix, iy), pt2=(x, y), color=(255, 0, 0), thickness=-1)
cv2.namedWindow("image")
cv2.setMouseCallback("image", draw_rectangle)
while True:
cv2.imshow("image", blank_image)
# wait 5 seconds then wait for ESC key
if cv2.waitKey(5) & 0xFF == 27:
break
cv2.destroyAllWindows()
References
https://github.com/mhdr/OpenCVSamples/tree/master/011