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 相关文章推荐
利用ctypes提高Python的执行速度
Sep 09 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
django中的setting最佳配置小结
Nov 21 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
python实现微信定时每天和女友发送消息
Apr 29 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Python中的引用和拷贝实例解析
Nov 14 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 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
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
react学习笔记之state以及setState的使用
2017/12/07 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
python实现的防DDoS脚本
2011/02/08 Python
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
python实现按行切分文本文件的方法
2016/04/18 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python先序遍历二叉树问题
2017/11/10 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python中wx模块的具体使用方法
2020/05/15 Python
如何利用python发送邮件
2020/09/26 Python
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
英文自荐信格式
2013/11/28 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
给老婆的保证书范文
2014/04/28 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
投标承诺函格式
2015/01/21 职场文书
故宫的导游词
2015/01/31 职场文书
后勤工作个人总结
2015/02/28 职场文书
教师节随笔
2015/08/15 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书