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版微信红包分配算法
May 04 Python
python处理二进制数据的方法
Jun 03 Python
Python多线程和队列操作实例
Jun 21 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
Python中max函数用于二维列表的实例
Apr 03 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
提升Python程序性能的7个习惯
Apr 14 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 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中的串行化变量和序列化对象
2006/09/05 PHP
JAVA/JSP学习系列之六
2006/10/09 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
vuex 的简单使用
2018/03/22 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
python中对list去重的多种方法
2014/09/18 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
python爬取抖音视频的实例分析
2021/01/19 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
同事打架检讨书
2014/02/04 职场文书
党员干部承诺书范文
2014/03/25 职场文书
勤俭节约主题班会
2015/08/13 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技