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使用Berkeley DB数据库实例
Sep 26 Python
Python itertools模块详解
May 09 Python
Python实现把数字转换成中文
Jun 29 Python
利用Python破解斗地主残局详解
Jun 30 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
如何在python中执行另一个py文件
Apr 30 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 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/06/19 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
小程序双头slider选择器的实现示例
2020/03/31 Javascript
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python实现基于POS算法的区块链
2018/08/07 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
Hammitt官网:设计师手袋
2020/05/23 全球购物
三个儿子教学反思
2014/02/03 职场文书
公益广告标语
2014/06/19 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
工作自我推荐信范文
2015/03/25 职场文书
现场施工员岗位职责
2015/04/11 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
用Python提取PDF表格的方法
2021/04/11 Python