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和C语言混合编程实例
Jun 04 Python
初步解析Python中的yield函数的用法
Apr 03 Python
Python实现控制台输入密码的方法
May 29 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
Python文件读写常见用法总结
Feb 22 Python
Django之无名分组和有名分组的实现
Apr 16 Python
postman传递当前时间戳实例详解
Sep 14 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
opencv python图像梯度实例详解
Feb 04 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
Python 操作 MySQL数据库
Sep 18 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获取当前url的具体方法全面解析
2013/11/26 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
js中eval详解
2012/03/30 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
微信小程序实现上拉加载功能
2019/11/20 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
python监控文件或目录变化
2016/06/07 Python
python中的lambda表达式用法详解
2016/06/22 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python反编译学习之字节码详解
2019/05/19 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
浅谈Python 递归算法指归
2019/08/22 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
pandas分批读取大数据集教程
2020/06/06 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
高三政治教学反思
2014/02/06 职场文书
网络编辑岗位职责范本
2014/02/10 职场文书
运动会入场词50字
2014/02/20 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
法人授权委托书范本
2014/09/17 职场文书
HttpClient实现文件上传功能
2022/08/14 Java/Android