Python下使用Trackbar实现绘图板

 更新时间:2020年10月27日 16:02:14   作者:qxcv  
这篇文章主要为大家详细介绍了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的橡皮擦擦除面板(选择了画笔模式的橡皮擦)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Atom Python 配置Python3 解释器的方法

    Atom Python 配置Python3 解释器的方法

    今天小编就为大家分享一篇Atom Python 配置Python3 解释器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Pycharm正版2022.2.2 官方翻译插件更新tkk失败不能用问题及解决方案

    Pycharm正版2022.2.2 官方翻译插件更新tkk失败不能用问题及解决方案

    这篇文章主要介绍了Pycharm正版2022.2.2 | 官方翻译插件更新tkk失败解决, 出现tkk问题的是这个翻译插件,本教程只解决该翻译插件不能用的问题,需要的朋友可以参考下
    2022-11-11
  • 详解Python中Sync与Async执行速度快慢对比

    详解Python中Sync与Async执行速度快慢对比

    Python新的版本中支持了async/await语法, 很多文章都在说这种语法的实现代码会变得很快, 但是这种快是有场景限制的。这篇文章将尝试简单的解释为何Async的代码在某些场景比Sync的代码快
    2023-03-03
  • python机器学习高数篇之函数极限与导数

    python机器学习高数篇之函数极限与导数

    这篇文章主要介绍了python机器学习高数篇之函数极限和导数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python定时任务随机时间执行的实现方法

    Python定时任务随机时间执行的实现方法

    这篇文章主要介绍了Python定时任务随机时间执行的实现方法,文中给大家提到了python定时执行任务的三种方式 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • pychram中切换python版本方式(附图文)

    pychram中切换python版本方式(附图文)

    这篇文章主要介绍了如何在PyCharm中切换Python版本的步骤,包括查看现有版本、文件设置切换、选择解释器路径以及应用更改,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • 从零学python系列之教你如何根据图片生成字符画

    从零学python系列之教你如何根据图片生成字符画

    网上有很多的字符画,看起来很炫酷,下面就告诉你如何用Python做这么炫酷的事,
    2014-05-05
  • python超详细实现完整学生成绩管理系统

    python超详细实现完整学生成绩管理系统

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个完整版学生成绩管理系统,大家可以在过程中查缺补漏,提升水平
    2022-03-03
  • Python hashlib模块与subprocess模块使用详细介绍

    Python hashlib模块与subprocess模块使用详细介绍

    这篇文章主要介绍了Python hashlib模块与subprocess模块使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • python进阶之自定义可迭代的类

    python进阶之自定义可迭代的类

    这篇文章主要为大家详细介绍了python进阶之自定义可迭代的类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08

最新评论