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中的深拷贝和浅拷贝详解
Jun 03 Python
python数组过滤实现方法
Jul 27 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
python实现BackPropagation算法
Dec 14 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
解决python 上传图片限制格式问题
Oct 30 Python
Python中的四种交换数值的方法解析
Nov 18 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
python中adb有什么功能
Jun 07 Python
利用python进行数据加载
Jun 20 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
对javascript和select部件的结合运用
2006/10/09 PHP
一个更简单的无限级分类菜单代码
2007/01/16 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
php 用sock技术发送邮件的函数
2007/07/21 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
Python实现批量读取word中表格信息的方法
2015/07/30 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
北大研究生linux应用求职信
2013/10/29 职场文书
计算机专业学生的自我评价
2013/12/15 职场文书
社会实践感言
2014/01/25 职场文书
春节联欢会策划方案
2014/05/16 职场文书
数控机床专业自荐信
2014/05/19 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
python实现剪贴板的操作
2021/07/01 Python