cv2小记——把鼠标当画笔
发布日期:2021-06-30 15:01:20 浏览次数:2 分类:技术文章

本文共 1869 字,大约阅读时间需要 6 分钟。

import osimport sysimport numpy as npimport cv2from matplotlib import pyplot as pltrawPath = os.path.abspath(__file__)currentFile = os.path.basename(sys.argv[0])dataPath = rawPath[:rawPath.find(currentFile)] + r'static\\'
def draw_circle(event, x, y, flags, param):    """    在图片上双击过的位置绘制一个圆圈    :return:    """    # 查看支持的鼠标事件    # events = [i for i in dir(cv2) if 'EVENT' in i]    # print(events)    if event == cv2.EVENT_LBUTTONDBLCLK:        cv2.circle(img, (x, y), 100, (255, 255, 255), -1)img = np.zeros((500, 500, 3), np.uint8)cv2.namedWindow('image')cv2.setMouseCallback('image', draw_circle)while 1:    cv2.imshow('image', img)    if cv2.waitKey(20) == 27:        breakcv2.destroyAllWindows()

在这里插入图片描述

# 当鼠标按下时变为 Truedrawing = False# 如果 mode 为 true 绘制矩形,按下 m 变成绘制曲线mode = Trueix, iy = -1, -1# 创建回调函数def draw_circle(event,x, y, flags, param):    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), (0, 255, 0), -1)            else:                # 绘制圆圈                cv2.circle(img, (x, y), 3, (0, 0, 255), -1)                # 下面注释掉的代码是起始点为圆心,起点到终点为半径的                # r = int(np.sqrt((x - ix)**2 + (y - iy)**2))                # cv2.circle(img, (x, y), r, (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)while 1:    cv2.imshow('image', img)    k = cv2.waitKey(1)    if k == ord('m'):        mode = not mode    elif k == 27:        break

在这里插入图片描述

转载地址:https://jiaming.blog.csdn.net/article/details/104106125 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:cv2小记——用滑动条做调色板
下一篇:cv2小记——绘图函数

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年05月03日 09时27分38秒