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装饰器使用方法实例
Nov 21 Python
python解析模块(ConfigParser)使用方法
Dec 10 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
python统计日志ip访问数的方法
Jul 06 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
基于Python实现的微信好友数据分析
Feb 26 Python
python爬虫获取百度首页内容教学
Dec 23 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
Python 类的私有属性和私有方法实例分析
Sep 29 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 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
Smarty安装配置方法
2008/04/10 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
jquery的键盘事件修改代码
2011/02/24 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
python fabric使用笔记
2015/05/09 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
Android interview questions
2016/12/25 面试题
《会走路的树》教后反思
2014/04/19 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
精神病医院见习报告
2014/11/03 职场文书
高中同学会致辞
2015/08/01 职场文书
干部外出学习心得体会
2016/01/18 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers