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学习之asyncore模块用法实例教程
Sep 29 Python
Python中的urllib模块使用详解
Jul 07 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
python高阶爬虫实战分析
Jul 29 Python
python如何创建TCP服务端和客户端
Aug 26 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Python爬取365好书中小说代码实例
Feb 28 Python
简单了解python列表和元组的区别
May 14 Python
python实现图片批量压缩
Apr 24 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/12/22 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
node.js入门教程
2014/06/01 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Scrapy的简单使用教程
2017/10/24 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
详解python读取和输出到txt
2019/03/29 Python
Python新手学习raise用法
2020/06/03 Python
详解python程序中的多任务
2020/09/16 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
求网格中的黑点分布
2013/11/06 面试题
Delphi软件工程师试题
2013/01/29 面试题
中学生运动会入场词
2014/02/12 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
就业意向书
2014/07/29 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
教师个人年度总结
2015/02/11 职场文书
2015年度保密工作总结
2015/04/24 职场文书
企业年会祝酒词
2015/08/11 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
利用python做数据拟合详情
2021/11/17 Python