12.Opencv大作业——实现鼠标绘制基本图形
#基本功能:
#可以通过鼠标进行基本图形的绘制
#1.可以画线:当用户按下L键时,即选择了画线,此时滑动鼠标即可画线
#2.可以画矩形:当用户按下r键,即可选择画矩形,此时滑动鼠标即可画矩形
#3.可以画圆:当用户按下c键,即可选择画圆。此时滑动鼠标即可画圆
# curshape: 0-drawline 1-drawrectangle 2-drawcircle
#基本功能:
#可以通过鼠标进行基本图形的绘制
#1.可以画线:当用户按下L键时,即选择了画线,此时滑动鼠标即可画线
#2.可以画矩形:当用户按下r键,即可选择画矩形,此时滑动鼠标即可画矩形
#3.可以画圆:当用户按下c键,即可选择画圆。此时滑动鼠标即可画圆# curshape: 0-drawline 1-drawrectangle 2-drawcirclefrom inspect import stack
import cv2
import numpy as np curshape = 0 #全局变量,当前图形
startpos = (0,0) #鼠标点#显示窗口和背景
img = np.zeros((480,640,3),np.uint8) #设置一个全黑的窗口#鼠标回调函数
#当点击鼠标按下时,应该获取到起始点,当抬起鼠标按键时,应获取到鼠标终止点,在起始点和终止点之间画一条线
def mouse_callback(event,x,y,flags,userdata): #print(event,x,y,flags, userdata)if (event & cv2.EVENT_LBUTTONDOWN == cv2.EVENT_LBUTTONDOWN):global curshape, startpos #全局变量的声明startpos = (x,y) #每次按下鼠标左键都会获得一个值elif (event & cv2.EVENT_LBUTTONUP == cv2.EVENT_LBUTTONUP):if curshape ==0: #drawlinecv2.line(img,startpos,(x,y),(0,0,255))elif curshape ==1: #drawrectanglecv2.rectangle(img,startpos,(x,y),(0,0,255))elif curshape ==2: #drawcirclea = (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.setMouseCallback('drawshape',mouse_callback,"123")while True:cv2.imshow('drawshape',img)key = cv2.waitKey(1) & 0xFFif key == ord('q'): #退出breakelif key == ord('l'): #linecurshape = 0elif key == ord('r'): #rectanglecurshape = 1elif key == ord('c'): #circlecurshape = 2cv2.destroyAllWindows()
运行结果:
Opencv基本图形绘制小结
画线、矩形、圆
画椭圆、多边形、多边形填充
画文字(中文有问题)
后期需学习:基本图像运算与处理、形态学、轮廓查找
12.Opencv大作业——实现鼠标绘制基本图形相关推荐
- C语言开发东北大学21级大作业—活力长者社区(图形界面)(附源码)
注:受老师许可,本程序内容与活力长者社区稍有不同.但所涉及到的功能.知识点与结构大致相似. 本程序名为 " 陆零玖酒店管理系统 " . 任何疑问欢迎留言.此源码仅供学习,请不要过度 ...
- 第一次OpenCV小作业-使用鼠标左键画圆画矩形
2020年9月28日 OpenCV中GUI的特性作业: 在白色(255, 255, 255)的背景中,利用滑动条选择颜色(RGB!),用鼠标左键画圆,右键画矩形. 分析: 要在白色背景中,利用滑动条选 ...
- python绘制小猪佩奇程序设计大作业_代码绘制一只小猪佩奇---python篇
今天教大家用python的pillow包来绘制小猪佩奇,python的安装就不用多说了,直接上代码吧 0.首先当然是安装pillow包啦. 关于pillow库的安装有几种方式 最常使用的是pip安装 ...
- HTML5期末大作业:在线电影网站设计——电影速递网(12页面)含登录注册HTML+CSS+JavaScript
HTML5期末大作业:在线电影网站设计--电影速递网(12页面)含登录注册HTML+CSS+JavaScript 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业 ...
- HTML5期末大作业:轮滑运动体育类人物介绍主题网站设计(12页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计
HTML5期末大作业:轮滑运动体育类人物介绍主题网站设计(12页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web学生网页设计作业源码 常见网页 ...
- HTML5期末大作业:茶叶主题网页设计——精美自适应绿色茶叶公司网页设计(12页) HTML+CSS+JavaScript
HTML5期末大作业:茶叶主题网页设计--精美自适应绿色茶叶公司网页设计(12页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 ...
- HTML5期末大作业:美食网页制作——餐饮料里(12页) HTML+CSS+JavaScript 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
HTML5期末大作业:美食网页制作--餐饮料里(12页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 ...
- 计算机应用基础考试试题及答案 在word中,用户建立的文件默认,天津大学《计算机应用基础》2016年12月考试期末大作业考核试题...
请同学及时保存作业,如您在20分钟内不作操作,系统将自动退出. <计算机应用基础>2016年12月考试期末大作业考核试题 试卷总分:100 测试时间:-- 单选题 一.单选题(共50 道试 ...
- Linux大作业任务书,《Linux系统管理》期末大作业任务书(2014.12)(1).doc
软件学院大作业任务书 课程名称: Linux系统管理 题 目: Linux系统管理期末大作业 专 业: 班 级: 学 号: 学生姓名: 完成人数: 1人 起讫日期: 任课教师: 李荣鑫 职称: 部分管 ...
最新文章
- Zabbix poller processes more than 75% busy
- with dlz mysql 条件_Flask Bind-DLZ + Mysql DNS管理平台
- ajax post 请求415\ 400 错误
- ionic最新安装教程
- Python-在线文本情感分析实验
- 用Golang写一个搜索引擎(0x07)--- 正排索引
- Matplotlib--legend函数
- PreferenceScreen1
- 概率论与数理统计期末复习(仅供参考)
- EAS 后台事务定时执行设置
- cdr怎么抠图轮廓线条_cdr怎么快速抠图呢 需要技巧
- java 闰年闰月_什么是闰年,闰年和闰月的区别
- windows server 远程登录后总是出现屏幕键盘,烦死人了
- 开放正成为华为下一阶段的战略竞争力
- 关于iOS获取音乐库的音乐信息 (获取本地音乐文件)
- [Unity] 状态机事件流程框架 (二) 设计游戏状态的保存框架,存档功能 ScriptableObject、EasySave
- 满减优惠用多了,想过怎么运作的吗?
- python获取地图上经纬度_Python获取各大地图平台经纬度数据,哪家的数据最准确?...
- tesseract-ocr 识别图片中的数字
- 当代著名书法家潘兴东书法欣赏(十八)