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通过websocket与js客户端通信示例分析
Jun 25 Python
python语言使用技巧分享
May 31 Python
深入理解Python中装饰器的用法
Jun 28 Python
用python与文件进行交互的方法
Mar 01 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
Python3之手动创建迭代器的实例代码
May 22 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
python os.fork() 循环输出方法
Aug 08 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
Python的垃圾回收机制详解
Aug 28 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
django rest framework 自定义返回方式
Jul 12 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
自己动手做一个SQL解释器
2006/10/09 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
2015年幼儿园新年寄语
2014/12/08 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL