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使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
Python生成数字图片代码分享
Oct 31 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
python爬取微信公众号文章
Aug 31 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 Python
使用python动态生成波形曲线的实现
Dec 04 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
python中如何对多变量连续赋值
Jun 03 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python聊天室实例程序分享
2016/01/05 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
建筑项目策划书
2014/01/13 职场文书
财产分割协议书范本
2014/11/03 职场文书
艺术节开幕词
2015/01/28 职场文书
出国留学导师推荐信
2015/03/26 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js