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中的exec、eval使用实例
Sep 23 Python
python实现ping的方法
Jul 06 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
python实现多进程代码示例
Oct 31 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
python语言基本语句用法总结
Jun 11 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
python 回溯法模板详解
Feb 26 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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(3) php 函数
2010/02/15 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
iframe 异步加载技术及性能分析
2011/07/19 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
Python 的 Socket 编程
2015/03/24 Python
python中反射用法实例
2015/03/27 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
机电专业个人自荐信格式模板
2013/09/23 职场文书
医学实习生自我鉴定
2013/12/12 职场文书
六年级数学教学反思
2014/02/03 职场文书
交通事故协议书范本
2014/11/18 职场文书
违纪检讨书
2015/01/27 职场文书
本溪关门山导游词
2015/02/09 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏