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实现按学生年龄排序的实际问题详解
Aug 29 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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 curl 获取https请求的2种方法
2015/04/27 PHP
前端必学之PHP语法基础
2016/01/01 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
详解javascript对数组和json数组的操作
2019/04/15 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python3使用requests发闪存的方法
2016/05/11 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
可口可乐广告词
2014/03/20 职场文书
中专生自荐信
2014/06/25 职场文书
边城读书笔记
2015/06/29 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
python获取对象信息的实例详解
2021/07/07 Python
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python