Python基于opencv实现的简单画板功能示例


Posted in Python onMarch 04, 2019

本文实例讲述了Python基于opencv实现的简单画板功能。分享给大家供大家参考,具体如下:

import cv2
import numpy as np
drawing = False # true if mouse is pressed
ix,iy = -1,-1
def nothing(x):
  pass
# mouse callback function
def draw_circle(event,x,y,flags,param):
  global ix,iy,drawing
  g = param[0]
  b = param[1]
  r = param[2]
  shape = param[3]
  if event == cv2.EVENT_LBUTTONDOWN:
    drawing = True
    ix,iy = x,y
  elif event == cv2.EVENT_MOUSEMOVE:
    if drawing == True:
      if shape == 0:
        cv2.rectangle(img,(ix,iy),(x,y),(g,b,r),-1)
      else:
        cv2.circle(img,(x,y),5,(g,b,r),-1)
  elif event == cv2.EVENT_LBUTTONUP:
    drawing = False
    if shape == 0:
      cv2.rectangle(img,(ix,iy),(x,y),(g,b,r),-1)
    else:
      cv2.circle(img,(x,y),5,(g,b,r),-1)
# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)
cv2.namedWindow('image')
# create trackbars for color change
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
# create switch for ON/OFF functionality
switch1 = '0 : OFF \n1 : ON'
switch2 = '0: Rectangle \n1: Line '
cv2.createTrackbar(switch1, 'image',0,1,nothing)
cv2.createTrackbar(switch2, 'image',0,1,nothing)
while(1):
  cv2.imshow('image',img)
  k = cv2.waitKey(1) & 0xFF
  # get current positions of four trackbars
  if k == 27:
      break
  r = cv2.getTrackbarPos('R','image')
  g = cv2.getTrackbarPos('G','image')
  b = cv2.getTrackbarPos('B','image')
  shape = cv2.getTrackbarPos(switch2,'image')
  s = cv2.getTrackbarPos(switch1,'image')
  if s == 0:
    img[:] = 0
  else:
    if k == 27:
      break
    cv2.setMouseCallback('image',draw_circle,(b,g,r,shape))
cv2.destroyAllWindows()

运行效果:

Python基于opencv实现的简单画板功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python标准库内置函数complex介绍
Nov 25 Python
十条建议帮你提高Python编程效率
Feb 16 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
Python中进程和线程的区别详解
Oct 29 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
在python中实现对list求和及求积
Nov 14 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
Python如何解决secure_filename对中文不支持问题
Jul 16 Python
python绘制漏斗图步骤详解
Mar 04 #Python
详解Python字典的操作
Mar 04 #Python
Python提取频域特征知识点浅析
Mar 04 #Python
python快排算法详解
Mar 04 #Python
Django 内置权限扩展案例详解
Mar 04 #Python
python三方库之requests的快速上手
Mar 04 #Python
django的ORM模型的实现原理
Mar 04 #Python
You might like
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
python爬虫的工作原理
2017/03/05 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
python用什么编辑器进行项目开发
2020/06/17 Python
python线程里哪种模块比较适合
2020/08/02 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
人力资源主管职责范本
2014/03/05 职场文书
小学生优秀评语大全
2014/04/22 职场文书
爱我中华教学反思
2014/04/28 职场文书
跳高加油稿
2015/07/21 职场文书
队列队形口号
2015/12/25 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
mysql优化
2021/04/06 MySQL
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis