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 相关文章推荐
以windows service方式运行Python程序的方法
Jun 03 Python
让python在hadoop上跑起来
Jan 27 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
如何通过命令行进入python
Jul 06 Python
python切割图片的示例
Nov 12 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截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php计算整个目录大小的方法
2015/06/19 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
PHP实现简单的计算器
2020/08/28 PHP
JavaScript中的类继承
2010/11/25 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
node.js中的path.extname方法使用说明
2014/12/09 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python错误处理详解
2014/09/28 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
python求解水仙花数的方法
2015/05/11 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
如何清空python的变量
2020/07/05 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
书法比赛获奖感言
2014/02/10 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
前台接待员岗位职责
2015/04/15 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis