python 基于opencv 实现一个鼠标绘图小程序
更新时间:2020年12月11日 10:00:04 作者:我坚信阳光灿烂
这篇文章主要介绍了python 基于opencv 实现一个鼠标绘图小程序,帮助大家更好的理解和使用python的opencv库,感兴趣的朋友可以了解下
需求
在画布上用鼠标画图,可以画圆或矩形,按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 鼠标绘图的资料请关注脚本之家其它相关文章!
相关文章
解决在keras中使用model.save()函数保存模型失败的问题
这篇文章主要介绍了解决在keras中使用model.save()函数保存模型失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
Python中的__new__与__init__魔术方法理解笔记
这篇文章主要介绍了Python中的__new__与__init__魔术方法理解笔记,需要的朋友可以参考下2014-11-11
Python 中如何使用 setLevel() 设置日志级别
这篇文章主要介绍了在 Python 中使用setLevel() 设置日志级别,Python 提供了一个单独的日志记录模块作为其标准库的一部分,以简化日志记录,本文将讨论日志记录 setLevel 及其在 Python 中的工作方式,需要的朋友可以参考下2023-07-07


最新评论