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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
Python最基本的输入输出详解
Apr 25 Python
Python selenium文件上传方法汇总
Nov 19 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
基于python纯函数实现井字棋游戏
May 27 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
python实现经纬度采样的示例代码
Dec 10 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连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php实现简单的上传进度条
2015/11/17 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
javascript常用的设计模式
2017/02/09 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
python实现八大排序算法(1)
2017/09/14 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python版DDOS攻击脚本
2019/06/12 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
如何利用Python识别图片中的文字
2020/05/31 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
小学生关于梦想的演讲稿
2014/08/22 职场文书
四十年同学聚会致辞
2015/07/28 职场文书