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将IP地址在整型和字符串之间轻松转换
Mar 22 Python
python文本数据相似度的度量
Mar 12 Python
Python简单定义与使用二叉树示例
May 11 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
Python3+Appium安装使用教程
Jul 05 Python
pandas 时间格式转换的实现
Jul 06 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
Python通过2种方法输出带颜色字体
Mar 02 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
浅析python 字典嵌套
Sep 29 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php微信开发之百度天气预报
2016/11/18 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
关于安全演讲稿
2014/05/09 职场文书
优秀语文教师事迹
2014/05/18 职场文书
运动会方阵口号
2014/06/07 职场文书
班级口号大全
2014/06/09 职场文书
运动会加油稿100字
2014/09/19 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
灵魂歌王观后感
2015/06/17 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android