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中多线程thread与threading的实现方法
Aug 18 Python
python实现矩阵乘法的方法
Jun 28 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
Python排序函数的使用方法详解
Dec 11 Python
python 遍历磁盘目录的三种方法
Apr 02 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
web前端开发也需要日志
2010/12/09 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python进程类subprocess的一些操作方法例子
2014/11/22 Python
python 性能提升的几种方法
2016/07/15 Python
python正则实现计算器功能
2017/12/14 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
python将unicode和str互相转化的实现
2020/05/11 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python grpc超时机制代码示例
2020/09/14 Python
Python try except else使用详解
2021/01/12 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
大学生职业生涯设计书
2014/01/02 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
环保建议书
2014/03/12 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
vue递归实现树形组件
2022/07/15 Vue.js