Python下使用Trackbar实现绘图板


Posted in Python onOctober 27, 2020

本次实验利用到了cv2中的createTrackbar和getTrackbarPos函数实现一个绘图板的功能,用户可以选择矩形或是画笔模式,并设置调色板中的值来选择颜色,再选择画笔大小,进行绘图。除此之外,还可以用橡皮擦进行擦除,模式同样也分为矩形和画笔。

下面是具体的代码:

import cv2
import numpy as np

drawing = False
mode = True
ix, iy = -1, -1

def nothing(x):
 pass

def draw_circle(event,x,y,flags,param):
 r = cv2.getTrackbarPos('R','image')
 g = cv2.getTrackbarPos('G','image')
 b = cv2.getTrackbarPos('B','image')
 color = (b,g,r)
 s = cv2.getTrackbarPos('eraser','image')
 if s == 1:
 color = (255,255,255)
 thin = cv2.getTrackbarPos('thin','image')

 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),color,-1)
 else:
 cv2.circle(img,(x,y),thin,color,-1)
 elif event == cv2.EVENT_LBUTTONUP:
 drawing == False

img = np.zeros((512,512,3), np.uint8)
img[:] = 255
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)

cv2.createTrackbar('eraser','image',0,1,nothing)
cv2.createTrackbar('thin','image',1,50,nothing)

cv2.setMouseCallback('image', draw_circle)

while(1):
 cv2.imshow('image',img)
 k = cv2.waitKey(1) & 0xFF
 if k == ord('m'):
 mode = not mode
 elif k == 27:
 break

下面是运行的结果:

1.运行初始界面

Python下使用Trackbar实现绘图板

2.选择颜色分别进行矩形绘图和画笔绘图,此图中的画笔的大小为1

Python下使用Trackbar实现绘图板

3.此时的画笔大小为15

Python下使用Trackbar实现绘图板

4.使用大小为15的橡皮擦擦除面板(选择了画笔模式的橡皮擦)

Python下使用Trackbar实现绘图板

5.使用大小为4的橡皮擦擦除面板(选择了画笔模式的橡皮擦)

Python下使用Trackbar实现绘图板

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中音频处理库pydub的使用教程
Jun 07 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
python导入pandas具体步骤方法
Jun 23 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
python asyncio 协程库的使用
Jan 21 Python
python 逐步回归算法
Apr 06 Python
python游戏开发Pygame框架
Apr 22 Python
python openCV自制绘画板
Oct 27 #Python
如何在windows下安装配置python工具Ulipad
Oct 27 #Python
Python调用JavaScript代码的方法
Oct 27 #Python
Pycharm中如何关掉python console
Oct 27 #Python
python和C++共享内存传输图像的示例
Oct 27 #Python
安装Anaconda3及使用Jupyter的方法
Oct 27 #Python
Python通过yagmail实现发送邮件代码解析
Oct 27 #Python
You might like
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
用javascript作一个通用向导说明
2011/08/30 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
python递归全排列实现方法
2018/08/18 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
求网格中的黑点分布
2013/11/06 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
监理员的岗位职责
2013/11/13 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
广告学毕业生求职信
2014/01/30 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
留学推荐信范文
2014/05/10 职场文书
年终晚会活动方案
2014/08/21 职场文书
2014年体育工作总结
2014/11/24 职场文书
项目战略合作意向书
2015/05/08 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书