Python下使用Trackbar实现绘图板
作者:qxcv 发布时间:2023-12-11 10:13:04
标签:python,Trackbar,绘图板
本次实验利用到了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.运行初始界面
2.选择颜色分别进行矩形绘图和画笔绘图,此图中的画笔的大小为1
3.此时的画笔大小为15
4.使用大小为15的橡皮擦擦除面板(选择了画笔模式的橡皮擦)
5.使用大小为4的橡皮擦擦除面板(选择了画笔模式的橡皮擦)
来源:https://blog.csdn.net/qxconverse/article/details/60338689


猜你喜欢
- 怎么样才能设计出漂亮的网页?怎么样才能做好网页设计工作,现在许多人还停留在网页制作的水平上,认为只要用好了网页制作软件,就能搞好网页设计了,
- 解决vscode终端输出中文乱码问题,强推方法二,少走几年弯路解决网上终端chcp65001仍然无效,或者vscode由utf-8改为GBK
- os.systemsystem方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。这个方法比较适用于外部程序没有输出结果的情况。im
- PyQt5图片显示控件QPixmap介绍QPixmap类用于绘图设备的图像显示,它可以作为一个QPainterDevice对象,也可以加载到
- python3字符串操作 x = 'abc' y = 'defgh' print(x + y)
- 一、背景有些情况下,我们面对实时更新的数据,希望能够在一个窗口中可视化出来,并且能够实时更新,方便我们观察数据的变化,从而进行数据分析,例如
- 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Student()s.sco
- Sql代码 CREATE TABLE test(a VARCHAR2( 20),b VARCHAR2 (20),c NUMBER,d VAR
- PDOStatement::fetchPDOStatement::fetch — 从结果集中获取下一行(PHP 5 >= 5.1.0,
- 三、支持XML的公司和它们的开发工具 尽管XML还处在开发阶段,其标准正在由W3C组织制定,但是已经有许多公司表示全力支持XML,并开发了不
- 如果我们需要修改sql server表结构,应该怎么做呢?下面就将教您如何修改sql server表结构的方法,希望对您学习sql serv
- ??本文核心:setup()概念、 reactive()的使用【前言】vue3作为vue2的升级版,有着很多的新特性,其中就包括了组合式AP
- 一 MySQL Workbench MySQL Workbench提供DBAs和developers一个集成工具环境: 1)数据库设计和建模
- 很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最
- 当然是可以的,而且非常简单,今天就教大家在ASP中不用模板生成HTML静态页的方法。这里假设有一个htmer.asp动态页面,你想把它生成为
- 解决方法:1、找到mysql安装目录c:\Program Files\MySQL\MySQL Server 5.5下的my.ini2、修改一
- 使用layui的文件上传组件,可以方便的弹出文件上传界面。效果如下:点击【批量导入】按钮调用js脚本importData(config)就可
- 编写思路:把本地文件在客户端通过base64编码以后发送目的地.测试过程中,上传文件过大,导致超时不成功.后来经过改善.把编码分段发送.测试
- pytorch做标准化利用transforms.Normalize(mean_vals, std_vals),其中常用数据集的均值方差有:i
- MySQL 分区技术(是mysql 5.1以版本后开始用->是甲骨文mysql技术团队维护人员以插件形式插入到mysql里面的技术)1