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 异常处理实例详解
Mar 12 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
最基础的Python的socket编程入门教程
Apr 23 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
django云端留言板实例详解
Jul 22 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
如何在C++中调用Python
May 21 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 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往windows中添加用户
2006/12/06 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
PHP SOCKET编程详解
2015/05/22 PHP
PHP微信分享开发详解
2017/01/14 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
vue观察模式浅析
2018/09/25 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python基于百度云文字识别API
2018/12/13 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
详解python深浅拷贝区别
2019/06/24 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
python 经典数字滤波实例
2019/12/16 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
Python项目跨域问题解决方案
2020/06/22 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫