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中__init__和__new__的区别详解
Jul 09 Python
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
Python如何获取系统iops示例代码
Sep 06 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
Python编写一个闹钟功能
Jul 11 Python
python的exec、eval使用分析
Dec 11 Python
基于python3实现socket文件传输和校验
Jul 28 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Django后台管理系统的图文使用教学
Jan 20 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
python之json文件转xml文件案例讲解
Aug 07 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学习 计数器实例代码
2008/06/15 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
php存储过程调用实例代码
2013/02/03 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
清空上传控件input file的值
2010/07/03 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
Django Admin实现上传图片校验功能
2016/03/06 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python中bytes和str类型的区别
2019/10/21 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
PyQt 如何创建自定义QWidget
2021/03/24 Python
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
团队队名口号大全
2014/06/06 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
golang中的空slice案例
2021/04/27 Golang
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS