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代码制作configure文件示例
Jul 28 Python
Python中使用SAX解析xml实例
Nov 21 Python
python中dir函数用法分析
Apr 17 Python
python获取从命令行输入数字的方法
Apr 29 Python
详解python之配置日志的几种方式
May 22 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
python 多线程串行和并行的实例
Feb 22 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
python 如何上传包到pypi
Dec 24 Python
Python爬取梨视频的示例
Jan 29 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数组内存耗用太多问题的解决方法
2010/04/05 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python修改MP3文件的方法
2015/06/15 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python中turtle库的使用实例
2019/09/09 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
《小动物过冬》教学反思
2014/04/17 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
同意报考证明
2015/06/17 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
党章学习心得体会2016
2016/01/14 职场文书
2016年敬老月活动总结
2016/04/05 职场文书