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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
python3.3实现乘法表示例
Feb 07 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
python redis 批量设置过期key过程解析
Nov 26 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
requests在python中发送请求的实例讲解
Feb 17 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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的闭合标签“?>”
2014/08/28 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
Javascript中arguments对象详解
2014/10/22 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
Three.js学习之网格
2016/08/10 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
python的unittest测试类代码实例
2017/12/07 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
开学典礼感言
2014/02/16 职场文书
销售会计岗位职责
2014/03/15 职场文书
单位委托书范本
2014/04/04 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
旷课检讨书500字
2014/10/14 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书