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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python中flatten( )函数及函数用法详解
Nov 02 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
利用Django模版生成树状结构实例代码
May 19 Python
python设置随机种子实例讲解
Sep 12 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
Python flask框架实现查询数据库并显示数据
Jun 04 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
用python开发一款操作MySQL的小工具
May 12 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
python实现删除文件与目录的方法
2014/11/10 Python
Python多线程编程(一):threading模块综述
2015/04/05 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
专科应届生求职信
2013/11/24 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
硕士生工作推荐信
2014/03/07 职场文书
新农村建设标语
2014/06/24 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
医院消毒隔离制度
2015/08/05 职场文书
小学语文教师研修日志
2015/11/13 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL