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开发常用的一些开源Package分享
Feb 14 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
Python内置函数reversed()用法分析
Mar 20 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
django的settings中设置中文支持的实现
Apr 28 Python
python面试题之列表声明实例分析
Jul 08 Python
Django后台管理系统的图文使用教学
Jan 20 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
python安装后的目录在哪里
Jun 21 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
joomla数据库操作示例代码
2016/01/06 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
JS获取父节点方法
2009/08/20 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
python人人网登录应用实例
2014/09/26 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
django实现支付宝支付实例讲解
2019/10/17 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
《云房子》教学反思
2014/04/20 职场文书
计算机网络专业求职信
2014/06/05 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
初中学生操行评语
2014/12/26 职场文书
大学运动会加油稿
2015/07/22 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
python异步的ASGI与Fast Api实现
2021/07/16 Python
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL
Redis基本数据类型List常用操作命令
2022/06/01 Redis