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下载FTP上的文件夹的实现代码
Feb 10 Python
Python continue语句用法实例
Mar 11 Python
介绍Python中内置的itertools模块
Apr 29 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
python逆向入门教程
Jan 15 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
python返回数组的索引实例
Nov 28 Python
python实现图像外边界跟踪操作
Jul 13 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 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 iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
基于empty函数的输出详解
2013/06/17 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
简单解决Python文件中文编码问题
2015/11/22 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python中print和return的作用及区别解析
2019/05/05 Python
python日志logging模块使用方法分析
2019/05/23 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
python文件及目录操作代码汇总
2020/07/08 Python
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
四年的大学生生活自我评价
2013/12/09 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
2014年药房工作总结
2014/11/22 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
个性与发展自我评价
2015/03/06 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript