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远程登录代码
Apr 29 Python
Python struct.unpack
Sep 06 Python
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
Python用Pillow(PIL)进行简单的图像操作方法
Jul 07 Python
Python实现的桶排序算法示例
Nov 29 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
我就是这样学习Python中的列表
Jun 02 Python
Python FFT合成波形的实例
Dec 04 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 Python
解决python3安装pandas出错的问题
May 20 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加密解密函数代码
2013/06/19 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
基于jquery的一个图片hover的插件
2010/04/24 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Python+django实现文件下载
2016/01/17 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
pandas.cut具体使用总结
2019/06/24 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
全运会口号
2014/06/20 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
博士给导师的自荐信
2015/03/06 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
党纪处分决定书
2015/06/24 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书