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中ConfigParse模块的用法
Sep 29 Python
python从sqlite读取并显示数据的方法
May 08 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
Tensorflow实现将标签变为one-hot形式
May 22 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
Python中的 Set 与 dict
Mar 13 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下目前为目最全的CURL中文说明
2010/08/01 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
RequireJs的使用详解
2017/02/19 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
简单介绍Python中的decode()方法的使用
2015/05/18 Python
python图像处理之镜像实现方法
2015/05/30 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
python处理excel绘制雷达图
2019/10/18 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
酒店执行总经理岗位职责
2013/12/15 职场文书
房地产还款计划书
2014/01/10 职场文书
电子信息工程自荐信
2014/05/26 职场文书
党员演讲稿
2014/09/04 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
公司规章制度范本
2015/08/03 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python
php访问对象中的成员的实例方法
2021/11/17 PHP