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程序员易犯的错误
Dec 15 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Python中的引用和拷贝实例解析
Nov 14 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
Python使用进程Process模块管理资源
Mar 05 Python
python语言中有算法吗
Jun 16 Python
Pygame Event事件模块的详细示例
Nov 17 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
超简单使用Python换脸实例
2019/03/27 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
如何执行一个shell程序
2012/11/23 面试题
对孩子的寄语
2014/04/09 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
高中班主任寄语
2019/06/21 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers