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读取Android permission文件
Nov 01 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
Python使用filetype精确判断文件类型
Jul 02 Python
Python中enumerate函数代码解析
Oct 31 Python
python操作kafka实践的示例代码
Jun 19 Python
新手如何发布Python项目开源包过程详解
Jul 11 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
Python基础之进程详解
May 21 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 获取全局变量的代码
2011/04/21 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
医学毕业生自荐信
2013/10/11 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
服务员态度差检讨书
2014/10/28 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python