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输出当前目录下index.html文件路径的方法
Apr 28 Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
Python 移动光标位置的方法
Jan 20 Python
Python OS模块实例详解
Apr 15 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
python能在浏览器能运行吗
Jun 17 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
python 爬虫网页登陆的简单实现
Nov 30 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的简单采集数据入库程序
2014/07/30 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
php实现简易计算器
2020/08/28 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python Queue模块详解
2014/11/30 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python tkinter三种布局实例详解
2020/01/06 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
小学科学教学反思
2014/01/26 职场文书
岗位说明书标准范本
2014/07/30 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
MySQL分区表管理命令汇总
2022/03/21 MySQL