python鼠标绘图_python 基于opencv 实现一个鼠标绘图小程序

本文介绍了如何使用Python和OpenCV库创建一个简单的鼠标绘图程序,用户可以在画布上通过鼠标画出矩形或圆形。程序通过监听鼠标事件(点击、移动和释放)来实现绘制,并提供了按m键切换矩形和圆形模式的功能。当左键按下时开始绘制,移动鼠标时实时更新图形,左键释放时结束绘制。
摘要由CSDN通过智能技术生成

需求

在画布上用鼠标画图,可以画圆或矩形,按m键在两种模式下切换。左键按下时开始画图,移动到哪儿画到哪儿,左键释放时结束画图。

实现思想

用鼠标画图:需要定义鼠标的回调函数mouse_event

画圆或矩形:需要定义一个画图的模式mode

左键单击、移动、释放:需要捕获三个不同的事件

开始画图,结束画图:需要定义一个画图的标记位drawing

实现代码

import cv2 as cv

import numpy as np

drawing = False # 是否开始画图

mode = True # True:画矩形,False:画圆

start = (-1, -1)

# 鼠标的回调函数的参数格式是固定的,不要随意更改。

def mouse_event(event, x, y, flags, param):

global start, drawing, mode

# 左键按下:开始画图

if event == cv.EVENT_LBUTTONDOWN:

drawing = True

start = (x, y)

# 鼠标移动,画图

elif event == cv.EVENT_MOUSEMOVE:

if drawing:

if mode:

cv.rectangle(img, start, (x, y), (0, 255, 0), -1)

else:

cv.circle(img, (x, y), 5, (0, 0, 255), -1)

# 左键释放:结束画图

elif event == cv.EVENT_LBUTTONUP:

drawing = False

if mode:

cv.rectangle(img, start, (x, y), (0, 255, 0), -1)

else:

cv.circle(img, (x, y), 5, (0, 0, 255), -1)

img = np.zeros((512, 512, 3), np.uint8)

cv.namedWindow("image")

cv.setMouseCallback("image", mouse_event)

while(True):

cv.imshow("image", img)

# 按下m切换模式

if cv.waitKey(1) == ord("m"):

mode = not mode

# 按ESC键退出程序

elif cv.waitKey(1) == 27:

break

实验结果

以上就是python 基于opencv 实现一个鼠标绘图小程序的详细内容,更多关于python 鼠标绘图的资料请关注云海天教程其它相关文章!

原文链接:https://www.cnblogs.com/wojianxin/p/12593418.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值