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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年05月03日 09时27分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
比特币要出现夭折?或许会出现转折
2019-05-01
比特币,山寨币,到底谁占有主导地位
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01
解释区块链钱包的意思
2019-05-01
让老百姓知道什么是比特币,只需要10分钟
2019-05-01
为什么要反对比特币,这不代表是空气币
2019-05-01
5G技术如何运用在数字资产方面
2019-05-01
区块链技术运用最广泛的还是保险
2019-05-01
新冠疫情影响了经济,却带动了区块链
2019-05-01
我们提出了DeFi项目如何成为聚合器,有两种路径
2019-05-01
SnapEx的新感觉,对新手很友好
2019-05-01
区块链有哪些潜在风险?
2019-05-01
聚合器运用在什么地方最合适
2019-05-01
区块链可以解决供应链的问题,包括食品方面
2019-05-01
首个聚合器怎么产生的,并运用领域在什么
2019-05-01
区块链资金安全吗?该怎么保护
2019-05-01
区块链的优势和劣势的对比
2019-05-01
新技术,区块链能用在什么领域
2019-05-01
区块链技术应用,最先医疗行业
2019-05-01
新币上市旧币会降价吗
2019-05-01