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 ljust rjust center输出
Sep 06 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Python Grid使用和布局详解
Jun 30 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
基于Python的Jenkins的二次开发操作
May 12 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
用PHP实现验证码功能
2006/10/09 PHP
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python 操作hive pyhs2方式
2019/12/21 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
公司财务流程之主管工作流程
2014/03/03 职场文书
小班开学寄语
2014/04/04 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
离婚协议书范文2014
2014/10/16 职场文书
门卫岗位职责
2015/02/09 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
导游词之无锡唐城
2019/12/12 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL