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实现的防DDoS脚本
Feb 08 Python
python 布尔操作实现代码
Mar 23 Python
在Python的web框架中中编写日志列表的教程
Apr 30 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
python实现大转盘抽奖效果
Jan 22 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python分割一个文本为多个文本的方法
Jul 22 Python
tensorflow之并行读入数据详解
Feb 05 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
python 基于selectors库实现文件上传与下载
Dec 31 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垃圾回收机制简单说明
2010/07/22 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
Vue中fragment.js使用方法小结
2020/02/17 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python 控制语句
2011/11/03 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
python实现xml转json文件的示例代码
2020/12/30 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
我们的节日端午节活动方案
2014/03/02 职场文书
青年文明号服务承诺
2014/03/31 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
2015年资料员工作总结
2015/04/25 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书