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 相关文章推荐
django使用xlwt导出excel文件实例代码
Feb 06 Python
python实现聊天小程序
Mar 13 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
Python图片的横坐标汉字实例
Dec 04 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
Pytorch之finetune使用详解
Jan 18 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
python解包概念及实例
Feb 17 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
用PHP生成自己的LOG文件
2006/10/09 PHP
PHP中cookies使用指南
2007/03/16 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
js实现微博发布小功能
2017/01/12 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
Python socket处理client连接过程解析
2020/03/18 Python
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
车间班组长岗位职责
2013/11/13 职场文书
行政总经理岗位职责
2013/12/05 职场文书
七年级生物教学反思
2014/01/30 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
MySQL存储过程及语法详解
2022/08/05 MySQL