1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
""" Created on 2018/5/9 @author: Maf """
import cv2 import numpy as np
def nothing(x): pass
drawing=False
mode=True ix,iy=-1,-1
def draw_circle(event,x,y,flags,param): r=cv2.getTrackbarPos('R','image') g=cv2.getTrackbarPos('G','image') b=cv2.getTrackbarPos('B','image') color=(b,g,r)
global ix,iy,drawing,mode
if event == cv2.EVENT_LBUTTONDOWN: drawing = True ix,iy = x,y
elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON: if drawing == True: if mode == True: cv2.rectangle(img,(ix,iy),(x,y),color,-1) else:
cv2.circle(img,(x,y),3,color,-1)
elif event == cv2.EVENT_LBUTTONUP: drawing == False
img = np.zeros((512,512,3),np.uint8) cv2.namedWindow('image') cv2.createTrackbar('R','image',0,255,nothing) cv2.createTrackbar('G','image',0,255,nothing) cv2.createTrackbar('B','image',0,255,nothing) cv2.setMouseCallback('image',draw_circle) while(1): cv2.imshow('image',img)
k=cv2.waitKey(1)&0xFF if k==ord('m'): mode=not mode elif k==27: break cv2.destroyAllWindows()
|