# 可以通过鼠标进行基本的图形绘制
# 1.可以画线:当用户按下l键,即选择画线,滑动鼠标即可画线
# 2.可以画矩形:当用户按下r键,即选择画矩形,滑动鼠标即可画矩形
# 3.可以画圆:当用户按下c键,即选择画圆,滑动鼠标即可画圆

import cv2
import numpy as np

# 显示背景
img=np.zeros((360,640,3),np.uint8)


curshape=0
startpos=(0,0)

# 鼠标回调函数
def mouse_callback(event,x,y,flags,userdata):
    global curshape
    global startpos
    # 获取鼠标左键按下的坐标点
    if event & cv2.EVENT_LBUTTONDOWN==cv2.EVENT_LBUTTONDOWN:
        startpos=(x,y)
    # 获取鼠标左键弹起的坐标点,并画图形
    elif event & cv2.EVENT_LBUTTONUP==cv2.EVENT_LBUTTONUP:
        if curshape==0:
            cv2.line(img,startpos,(x,y),(0,0,255))
        elif curshape==1:
            cv2.rectangle(img,startpos,(x,y),(0,0,255))
        elif curshape==2:
            a=x-startpos[0]
            b=y-startpos[1]
            r=int((a**2+b**2)**0.5)
            cv2.circle(img,startpos,r,(0,0,255))
        else:
            print('error:no shape')


# 创建窗口
cv2.namedWindow('drawshape',cv2.WINDOW_NORMAL)
cv2.resizeWindow('drawshape',640,360)

# 设置鼠标回调
cv2.setMouseCallback('drawshape',mouse_callback,'123')


while 1:
    cv2.imshow('drawshape',img)
    key=cv2.waitKey(1)
    if key==ord('q'):
        break
    elif key==ord('l'):
        curshape=0
    elif key==ord('r'):
        curshape=1
    elif key==ord('c'):
        curshape=2

cv2.destroyAllWindows()

评论
头像
验证码:
相关推荐

七年之痒是什么意思

520送什么给女友

第一次见女方父母送什么好




如果未经特殊说明,本站内容皆为原创,转载内容如果侵犯了您的权益,如有侵权请联系管理员删除
联系QQ:2380712278

备案号:皖ICP备19012824号