opencv python 创建滑动条

import numpy as np
import cv2
#查询鼠标事件
events=[i for i in dir(cv2) if 'EVENT' in i]
print(events)

drawing=False
mode=True
ix,iy=-1,-1

def nothing():
    pass


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,3)
            else:
                cv2.circle(img,(x,y),23,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)
    if k==ord('m'):
        mode=not mode
    elif k==ord('q'):
        break
    
cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/qq_41244435/article/details/86596462