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制作简单的钢琴程序的教程
Apr 01 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
Python登录注册验证功能实现
Jun 18 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
Python依赖包整体迁移方法详解
Aug 15 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
django实现模型字段动态choice的操作
Apr 01 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 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验证邮箱是否合格
2019/01/28 PHP
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
layui前端时间戳转化实例
2019/11/15 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
9种python web 程序的部署方式小结
2014/06/30 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
生产管理的三大手法
2013/11/11 职场文书
家长会邀请书
2014/01/25 职场文书
社区工作感言
2014/02/21 职场文书
小学生期末评语
2014/04/21 职场文书
机关保密承诺书
2014/06/03 职场文书
市场调查策划方案
2014/06/10 职场文书
财务会计岗位职责
2015/02/03 职场文书
公积金具结保证书
2015/05/11 职场文书
八年级物理教学反思
2016/02/19 职场文书
人民币使用说明书
2019/04/17 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang