Python图像处理之简单画板实现方法示例
作者:老司机的诗和远方 发布时间:2022-08-28 07:36:17
标签:Python,图像处理,画板
本文实例讲述了Python图像处理之简单画板实现方法。分享给大家供大家参考,具体如下:
Python图像处理也是依赖opencv的Python接口实现的,Python语言简单易懂,简洁明了。本次实现画板涂鸦,一个是在里面画矩形,还有画线。其他也都可以扩展,本案例只做例程,思路是对鼠标事件的处理,以及滚动条调节颜色处理。鼠标事件就包含有左键按下,以及释放事件的处理。
import cv2
import numpy as np
# null function
def nothing(x):
pass
Drawing = False
Mode = True
IX,IY = -1,-1
def drawCircle(Event,X,Y,Flags,Param):
R = cv2.getTrackbarPos('R','Image')
G = cv2.getTrackbarPos('G','Image')
B = cv2.getTrackbarPos('B','Image')
#get color value
Color = (B,G,R);
global IX,IY,Drawing,Mode
if Event == cv2.EVENT_LBUTTONDOWN:
Drawing = True
IX,IY = X,Y
elif Event == cv2.EVENT_MOUSEMOVE and Flags == cv2.EVENT_FLAG_LBUTTON:
if Drawing == True:
if Mode == True:
cv2.rectangle(Img,(IX,IY),(X,Y),Color,-1)
else:
cv2.circle(Img,(X,Y),3,Color,-1);
elif Event == cv2.EVENT_LBUTTONUP:
Drawing = False
#create image with 3 chanels
Img = np.zeros((660,660,3),np.uint8)
#create window
cv2.namedWindow('Image')
#create track bar, range for 0~255
cv2.createTrackbar('R','Image',0,255,nothing)
cv2.createTrackbar('G','Image',0,255,nothing)
cv2.createTrackbar('B','Image',0,255,nothing)
#set mouse ack
cv2.setMouseCallback('Image',drawCircle)
while(1):
cv2.imshow('Image',Img)
k = cv2.waitKey(10)&0xFF
#switch draw mode
if k == ord('m'):
Mode = not Mode
elif k == 27:
break
#you must destroy all of sources
cv2.destroyAllWindows()
最后的效果图如下:
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/Touch_Dream/article/details/52199442
0
投稿
猜你喜欢
- 使用fastapi框架开发web项目1、为什么要用fastapi?一直以来博主都是一直使用Django进行开发的,最近公司开始使用fasta
- Pandas是Python中最流行的数据分析和处理工具之一,它提供了一个名为DataFrame的数据结构,可以被认为是一个二维表格或电子表格
- 1. 概述在Numpy 1.24版本中,删除了像np.float、np.int 这样的 Python 内置类型的 alias,因此以后在代码
- 本文实例讲述了Python上下文管理器类和上下文管理器装饰器contextmanager用法。分享给大家供大家参考,具体如下:一. 什么是上
- 在Web渗透流程的暴力登录场景和爬虫抓取场景中,经常会遇到一些登录表单用DES之类的加密方式来加密参数,也就是说,你不搞定这些前端加密,
- 阅读上一篇:打造设计你自己的字体 Ⅱ永远都在寻觅字体设计的灵感。夏天过后,我买了一套便宜的书法钢笔,说服自己,它会让我的鸡爬字产生脱胎换骨的
- Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼、富有朝气。但也许你还没有发现并应用它的一些更高级的功能吧
- python中的绘图工具有不少,比如Matplotlib等等,但这些只能用来画表格,今天我们来介绍一款可以用来画画的库——turtle。一、
- 最近开始在项目中使用Quickwork For Asp,虽然该框架是自己独立完成的,不过功能没做过详细的总结,所以很多参数总是会弄错,毕竟鱼
- 前言套接字(Sockets)是双向通信信道的端点。 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可
- 我的需求:手动配置X轴、Y轴、图表标题等参数自动通过Pyecharts模块生成可视化的html数据图表,并将浏览器图表展示到UI界面上。制作
- 本文实例解析Python SqlAlchemy的使用方法,分享给大家供大家参考,具体内容如下1.初始化连接from sqlalchemy i
- 很多时候,设计师们都会通过各种渠道去了解用户的需求,然而从这些渠道反馈回来的信息大部分只是用户的期望并不是真正的用户需求,但是很多时候这些期
- selenuim模块定位方法1,我们想要操作html页面上的元素,首先必须要定位到这个元素上。每个元素都有他各自的属性,比如id,name,
- 使用django实现注册登录的话,注册登录都有现成的代码,主要是自带的User字段只有(email,username,password),所
- 从本地文件夹中选取一张图片并在canvas上显示from tkinter import *from tkinter import filed
- 最近项目需要,需要在表创建好之后,初始化一些数据。Django初始化数据的方法有很多,但都需要额外的手动操作,不智能。看网上有一种方法用po
- 本文实例讲述了Django rest framework工具包简单用法。分享给大家供大家参考,具体如下:Django rest framew
- QQ登录Banner增加了剧情的概念之后,已经推出了春节和情人节两期。这之后设想能围绕Banner做的更加丰富,对传统文化的体现也能更为深入
- 2010新的架构工具可以让我们了解应用程序和功能设计,并帮助验证设计和执行不偏离。它除了支持一般系统分析设计流程(需求→实体)外,也支持另一