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 相关文章推荐
Python3 能振兴 Python的原因分析
Nov 28 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
python去掉空白行的多种实现代码
Mar 19 Python
django的settings中设置中文支持的实现
Apr 28 Python
Python TestCase中的断言方法介绍
May 02 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
python numpy 矩阵堆叠实例
Jan 17 Python
Python处理PDF与CDF实例
Feb 26 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 sprintf()函数用例解析
2011/05/18 PHP
解析php中反射的应用
2013/06/18 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
python自动翻译实现方法
2016/05/28 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python全栈开发语法总结
2020/11/22 Python
学生周末回家住宿长期请假条
2014/02/15 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
电钳工人个人求职信
2014/05/10 职场文书
运动会报道稿300字
2014/10/02 职场文书
质量整改通知单
2015/04/21 职场文书
作息时间调整通知
2015/04/22 职场文书
检讨书怎么写
2015/05/07 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
六年级作文之自救
2019/12/19 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android