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学习笔记(二)基础语法
Jun 06 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
python and or用法详解
Jun 26 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 Python
利用python爬取有道词典的方法
Dec 08 Python
Python实现给PDF添加水印的方法
Jan 25 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 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
laravel 4安装及入门图文教程
2014/10/29 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
jQuery 操作XML入门
2008/12/25 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
django反向解析和正向解析的方式
2018/06/05 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
服务之星获奖感言
2014/01/21 职场文书
迎新晚会邀请函
2014/02/01 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
劳资员岗位职责
2015/02/13 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android