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的urllib模块显示下载进度示例
Jan 17 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python+Wordpress制作小说站
Apr 14 Python
Python设计模式之命令模式简单示例
Jan 10 Python
Pandas实现数据类型转换的一些小技巧汇总
May 07 Python
深入理解Python异常处理的哲学
Feb 01 Python
Python 串口读写的实现方法
Jun 12 Python
python 求定积分和不定积分示例
Nov 20 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
Python实现文字pdf转换图片pdf效果
Apr 03 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
php 获取全局变量的代码
2011/04/21 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
Vue计算属性的使用
2017/08/04 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
Python检测网络延迟的代码
2018/05/15 Python
详解python里的命名规范
2018/07/16 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python面向对象封装操作案例详解
2019/12/31 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
最新自我评价范文
2013/11/16 职场文书
安全生产检查通报
2014/01/29 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
公司授权委托书范本
2014/09/18 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
承诺函格式模板
2015/01/21 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
开学第一周总结
2015/07/16 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
中学语文教学反思
2016/02/16 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
Python如何将list中的string转换为int
2022/07/15 Ruby