Python图像处理之简单画板实现方法示例


Posted in Python onAugust 30, 2018

本文实例讲述了Python图像处理之简单画板实现方法。分享给大家供大家参考,具体如下:

Python图像处理也是依赖opencv的Python接口实现的,Python语言简单易懂,简洁明了。本次实现画板涂鸦,一个是在里面画矩形,还有画线。其他也都可以扩展,本案例只做例程,思路是对鼠标事件的处理,以及滚动条调节颜色处理。鼠标事件就包含有左键按下,以及释放事件的处理。

import cv2
import numpy as np
# null function
def nothing(x):
  pass
Drawing = False
Mode = True
IX,IY = -1,-1
def drawCircle(Event,X,Y,Flags,Param):
  R = cv2.getTrackbarPos('R','Image')
  G = cv2.getTrackbarPos('G','Image')
  B = cv2.getTrackbarPos('B','Image')
#get color value
  Color = (B,G,R);
  global IX,IY,Drawing,Mode
  if Event == cv2.EVENT_LBUTTONDOWN:
    Drawing = True
    IX,IY = X,Y
  elif Event == cv2.EVENT_MOUSEMOVE and Flags == cv2.EVENT_FLAG_LBUTTON:
    if Drawing == True:
      if Mode == True:
        cv2.rectangle(Img,(IX,IY),(X,Y),Color,-1)
      else:
        cv2.circle(Img,(X,Y),3,Color,-1);
  elif Event == cv2.EVENT_LBUTTONUP:
    Drawing = False
#create image with 3 chanels
Img = np.zeros((660,660,3),np.uint8)
#create window
cv2.namedWindow('Image')
#create track bar, range for 0~255
cv2.createTrackbar('R','Image',0,255,nothing)
cv2.createTrackbar('G','Image',0,255,nothing)
cv2.createTrackbar('B','Image',0,255,nothing)
#set mouse ack
cv2.setMouseCallback('Image',drawCircle)
while(1):
  cv2.imshow('Image',Img)
  k = cv2.waitKey(10)&0xFF
  #switch draw mode
  if k == ord('m'):
    Mode = not Mode
  elif k == 27:
    break
#you must destroy all of sources
cv2.destroyAllWindows()

最后的效果图如下:

Python图像处理之简单画板实现方法示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
想学python 这5本书籍你必看!
Dec 11 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Django ModelForm组件使用方法详解
Jul 23 Python
python 求10个数的平均数实例
Dec 16 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 #Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 #Python
python语音识别实践之百度语音API
Aug 30 #Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 #Python
python的中异常处理机制
Aug 30 #Python
python调用百度REST API实现语音识别
Aug 30 #Python
python调用百度语音REST API
Aug 30 #Python
You might like
xml+php动态载入与分页
2006/10/09 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
JavaScript 注册事件代码
2011/01/27 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
JS之相等操作符详解
2016/09/13 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
情人节活动策划方案
2014/02/27 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
超强台风观后感
2015/06/09 职场文书
失恋33天观后感
2015/06/11 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
创业计划之特色精品店
2019/08/12 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
在Python 中将类对象序列化为JSON
2022/04/06 Python