python opencv实现简易画图板


Posted in Python onAugust 27, 2020

python-opencv实现简易画图板,供大家参考,具体内容如下

# -*- coding: utf-8 -*-
"""
Created on Sat May 19 17:34:54 2018

@author: xxx
"""

import cv2 as cv
import numpy as np


def nothing(x):
  pass

# 当鼠标按下时变为 True
drawing = False
# 如果 mode 为 True 绘制矩形。按下 'm' 变成绘制曲线
mode = True
ix, iy = -1, -1

#创建回调函数
def draw_circle(event, x, y, flags, param):
  r = cv.getTrackbarPos('R', 'image')
  g = cv.getTrackbarPos('G', 'image')
  b = cv.getTrackbarPos('B', 'image')
  color = (b, g, r)

  global ix, iy, drawing, mode
  # 当按下左键是返回起始位置坐标
  if event == cv.EVENT_LBUTTONDOWN:
    drawing = True
    ix, iy = x, y
#    当鼠标左键按下并移动是绘制图形。event 可以查看移动, flag 查看是否按下
  elif event == cv.EVENT_MOUSEMOVE and flags == cv.EVENT_FLAG_LBUTTON:
    if drawing == True:
      if mode == True:
        cv.rectangle(img, (ix, iy), (x, y), color, -1)
      else:
        # 绘制圆圈,小圆点连在一起就成了线,3代表画笔的粗细
        cv.circle(img, (ix, iy), 3, color, -1)
        # 下面注释的代码是起始点为圆心,起点到终点为半径
#        r = int(np.sqrt((x - ix)**2 + (y - iy)**2))
#        cv.circle(img, (x, y), r, (0, 0, 255), -1)
#    当鼠标松开停止绘画
  elif event == cv.EVENT_LBUTTONUP:
      drawing == False
#      if mode == True:
#        cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)
#      else:
#      cv.circle(img, (x, y), 5, (0, 0, 255), -1)

#创建一幅黑色图形
img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('image')

cv.createTrackbar('R', 'image', 0, 255, nothing)
cv.createTrackbar('G', 'image', 0, 255, nothing)
cv.createTrackbar('B', 'image', 0, 255, nothing)
cv.setMouseCallback('image', draw_circle)

while(1):
  cv.imshow('image', img)
  k = cv.waitKey(1)&0xFF
  if k == ord('m'):
    mode = not mode
  elif k==27:
    break


cv.destroyAllWindow()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置函数的用法实例教程
Sep 08 Python
Python正则捕获操作示例
Aug 19 Python
python difflib模块示例讲解
Sep 13 Python
使用Python的turtle模块画图的方法
Nov 15 Python
分析Python中解析构建数据知识
Jan 20 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
Python实现一个优先级队列的方法
Jul 31 Python
golang中的空接口使用详解
Mar 30 Python
详解Python自动化之文件自动化处理
Jun 21 Python
Python上下文管理器Content Manager
Jun 26 Python
python实现画图工具
Aug 27 #Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 #Python
基于python实现操作redis及消息队列
Aug 27 #Python
Python3如何在服务器打印资产信息
Aug 27 #Python
python 8种必备的gui库
Aug 27 #Python
Django静态文件加载失败解决方案
Aug 26 #Python
Python趣味入门教程之循环语句while
Aug 26 #Python
You might like
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
javascript学习之json入门
2016/12/22 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
python提取字典key列表的方法
2015/07/11 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Django实现celery定时任务过程解析
2020/04/21 Python
python实现简单猜单词游戏
2020/12/24 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
2014年幼儿园小班工作总结
2014/12/04 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
会计出纳岗位职责
2015/03/31 职场文书
2015年组织部工作总结
2015/04/03 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
红色电影观后感
2015/06/18 职场文书
党员反邪教心得体会
2016/01/15 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书