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批量生成任意尺寸的图片
Aug 29 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
Pytorch之保存读取模型实例
Dec 30 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python logging模块handlers用法详解
Aug 14 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
DOM 高级编程
2015/05/06 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python爬虫文件下载图文教程
2018/12/23 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
翻译专业应届生求职信
2013/11/23 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
学期个人自我总结
2015/02/13 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
vue实现锚点定位功能
2021/06/29 Vue.js