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通过BF算法实现关键词匹配的方法
Mar 13 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
Python处理文本换行符实例代码
Feb 03 Python
python使用zip将list转为json的方法
Dec 31 Python
详解Python函数式编程—高阶函数
Mar 29 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Python函数的默认参数设计示例详解
Dec 01 Python
pytorch 改变tensor尺寸的实现
Jan 03 Python
python实现录屏功能(亲测好用)
Mar 02 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
Django 实现图片上传和下载功能
Dec 31 Python
pytorch 实现在测试的时候启用dropout
May 27 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
人大复印资料处理程序_查询篇
2006/10/09 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php生成图片验证码
2015/06/09 PHP
php生成动态验证码gif图片
2015/10/19 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
Three.js学习之网格
2016/08/10 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
Mac中安装nvm的教程分享
2017/12/11 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python书单 不将就
2017/07/11 Python
python实现TF-IDF算法解析
2018/01/02 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
python 实现视频 图像帧提取
2019/12/10 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
pandas的resample重采样的使用
2020/04/24 Python
python和JavaScript哪个容易上手
2020/06/23 Python
如何编写python的daemon程序
2021/01/07 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
挂职思想汇报
2013/12/31 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python