探索Gradio库中的Image模块及其强大功能

news2025/1/10 20:30:45

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/390/

请添加图片描述

(封面图由文心一格生成)

探索Gradio库中的Image模块及其强大功能

Gradio是一个用于构建交互式机器学习和深度学习应用程序的库,提供了简单易用的界面组件。其中的Image模块是用于上传/绘制图像(作为输入)或显示图像(作为输出)的组件。在本文中,我们将介绍Image模块的基本用法以及其中的change、edit、clear、stream、upload和select方法。

Image模块介绍

Gradio的Image模块用于处理图像输入和输出。它支持多种格式的图像,包括numpy数组、PIL图像和文件路径。以下是Image模块的一些关键参数:

  • value:用于设置组件的默认值,可以是PIL图像、numpy数组、文件路径或URL。
  • shape:用于裁剪和调整图像的形状,可以指定宽度和高度。
  • height:显示图像的高度(像素)。
  • width:显示图像的宽度(像素)。
  • image_mode:图像模式,可以是"RGB"(彩色)或"L"(黑白)。
  • invert_colors:是否在预处理步骤中反转图像。
  • source:图像的来源,可以是"upload"(上传)、“webcam”(摄像头)或"canvas"(画布)。
  • tool:用于编辑图像的工具,可以是"editor"(编辑器)、“select”(裁剪和缩放工具)、“sketch”(二值化草图)或"color-sketch"(多颜色草图)。
  • type:在传递给预测函数之前将图像转换为的格式,可以是"numpy"(numpy数组)、“pil”(PIL图像)或"filepath"(临时文件路径)。

除了这些参数,Image模块还支持其他配置选项,例如标签显示、交互性设置和容器设置。

change方法

change方法是一个监听器,当组件的值发生改变时触发,无论是由用户输入引起的还是由函数更新引起的。可以用于处理输入组件的值变化,例如调用机器学习模型的预测函数。

edit方法

edit方法是一个监听器,当用户使用内置编辑器编辑图像时触发。可以用于处理图像编辑事件,例如对编辑后的图像进行进一步处理或调用相应的函数。

clear方法

clear方法是一个监听器,当用户点击组件上的X按钮清除图像时触发。可以用于处理图像清除事件,例如重置图像处理的状态或清除相关的输入。

stream方法

stream方法是一个监听器,当用户使用组件进行图像流处理(如实时摄像头)时触发。可以用于处理图像流事件,例如实时处理视频流数据或调用相

应的函数。

upload方法

upload方法是一个监听器,当用户上传文件到组件时触发。可以用于处理图像上传事件,例如读取上传的图像文件并进行相应的处理或调用相应的函数。

select方法

select方法是一个监听器,当用户点击图像中的像素时触发。可以用于处理图像选择事件,例如根据用户选择的像素位置进行相应的处理或调用相应的函数。

通过使用这些监听器方法,可以灵活地处理Image模块中的各种事件,实现与图像相关的交互和处理功能。

参数详解

Image模块参数:

参数数据类型默认值描述
valuestr | _Image.Image | np.ndarray | NoneNoneImage组件的默认值,可以是PIL Image、numpy数组、路径或URL。如果是可调用对象,每次应用加载时都会调用该函数以设置组件的初始值。
shapetuple[int, int] | NoneNone图像传递给函数时的裁剪和调整大小的形状(宽度,高度)。如果为None,则与输入图像大小匹配。可以将宽度或高度设置为None,仅裁剪和调整大小另一个参数。
heightint | NoneNone显示图像的高度(以像素为单位)。
widthint | NoneNone显示图像的宽度(以像素为单位)。
image_modestr“RGB”图像的模式,"RGB"表示彩色,"L"表示黑白。
invert_colorsboolFalse是否在预处理步骤中反转图像。
sourcestr“upload”图像的来源。"upload"表示用户可以上传图像文件,"webcam"允许用户从网络摄像头拍摄快照,"canvas"默认为一个可编辑的白色图像。
toolstr | NoneNone用于编辑的工具。“editor"允许全屏编辑(如果source是"upload"或"webcam”,则是默认工具),"select"提供裁剪和缩放工具,“sketch"允许创建二进制草图(如果source是"canvas”,则是默认工具),"color-sketch"允许以不同颜色创建草图。"color-sketch"可与source="upload"或"webcam"一起使用,以在图像上进行草图。"sketch"也可与"upload"或"webcam"一起使用,以在图像上创建蒙版,在这种情况下,图像和蒙版都作为具有键"image"和"mask"的字典传递到函数中。
typestr“numpy”在传递给预测函数之前,将图像转换为的格式。"numpy"将图像转换为形状为(height, width, 3)、取值范围为0到255的numpy数组;"pil"将图像转换为PIL Image对象;"filepath"将图像传递给一个临时文件的路径。
labelstr | NoneNone在界面中的组件名称。
everyfloat | NoneNone如果value是可调用对象,在客户端连接打开时,每隔指定的秒数运行函数。否则没有任何效果。队列必须启用。可以通过此组件的.load_event属性访问事件(例如取消它)。
show_labelboolTrue如果为True,将显示标签。
containerboolTrue如果为True,将在容器中放置组件,提供一些额外的边框填充。
scaleint | NoneNone相对于同一行中相邻组件的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,那么组件A的宽度将是组件B的两倍。应为整数。
min_widthint160最小像素宽度,如果屏幕空间不足以满足此值,则换行。如果某个比例值导致此组件比min_width更窄,将首先尊重min_width参数。
interactivebool | NoneNone如果为True,将允许用户上传和编辑图像;如果为False,只能用于显示图像。如果未提供,则根据组件是输入还是输出进行推断。
visibleboolTrue如果为False,将隐藏组件。
streamingboolFalse如果在live接口中为True,将自动流式传输网络摄像头的视频。仅在source为’webcam’时有效。
elem_idstr | NoneNone作为HTML DOM中此组件的id分配的可选字符串。可用于定位CSS样式。
elem_classeslist[str] | str | NoneNone作为HTML DOM中此组件的类分配的可选字符串列表。可用于定位CSS样式。
mirror_webcamboolTrue如果为True,则将翻转网络摄像头的视频。默认为True。
brush_radiusfloat | NoneNoneSketch的画笔大小。默认为None,选择一个合理的默认值。

change方法参数:

参数数据类型默认值描述
fnCallable | Nonerequired需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的gradio.components的列表。如果函数不需要输入,这应该是一个空列表。
outputsComponent | list[Component] | NoneNone用作输出的gradio.components的列表。如果函数不返回输出,这应该是一个空列表。
api_namestr | NoneNone定义此参数将在api文档中公开该端点。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,将在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,将在等待时显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列(如果已启用队列)。如果为False,则不会将此事件放入队列,即使已启用队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size),然后函数需要强制返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,则最大批处理在一起的输入数。仅在batch=True时相关。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件以base64字符串调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone在此监听器触发时取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位。队列必须启用。

edit方法参数:

参数数据类型默认值描述
fnCallable | Nonerequired需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的gradio.components的列表。如果函数不需要输入,这应该是一个空列表。
outputsComponent | list[Component] | NoneNone用作输出的gradio.components的列表。如果函数不返回输出,这应该是一个空列表。
api_namestr | NoneNone定义此参数将在api文档中公开该端点。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,将在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,将在等待时显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列(如果已启用队列)。如果为False,则不会将此事件放入队列,即使已启用队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size),然后函数需要强制返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,则最大批处理在一起的输入数。仅在batch=True时相关。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件以base64字符串调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone在此监听器触发时取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位。队列必须启用。

stream方法参数:

参数数据类型默认值描述
fnCallable | Nonerequired需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的gradio.components的列表。如果函数不需要输入,这应该是一个空列表。
outputsComponent | list[Component] | NoneNone用作输出的gradio.components的列表。如果函数不返回输出,这应该是一个空列表。
api_namestr | NoneNone定义此参数将在api文档中公开该端点。
status_trackerNoneNone
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,将在等待时显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列(如果已启用队列)。如果为False,则不会将此事件放入队列,即使已启用队列。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size),然后函数需要强制返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法,则最大批处理在一起的输入数。仅在batch=True时相关。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件以base64字符串调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone在此监听器触发时取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位。队列必须启用。

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

84、基于stm32单片机超市自助存储柜快递箱系统设计(程序+原理图+流程图+参考论文+开题报告+任务书+设计资料+元器件清单等)

单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&a…

Go程序结构- package和import

1、包和文件 在Go语言中包的作用和其他语言中的库或模块的作用类似,用于支持模块化、封装、编译隔离和重用。关键点如下: (1)包中保存一个或者多个.go结尾的文件,而包的目录就是包的导入路径 (2)中Go中通过一条简单的规则来管理标识符是否对外…

下个版本已定!C++自救新动作!

自去年年底,美国安全局(NSA)在其所发布的《Software Memory Safety》报告中点名批评C之后,C之父Bjarne Stroustrup一顿回怼后,做出决定:内部自救。现在,就让我们看看下一个版本的C,究…

【Go】Go 语言教程--语言变量(五)

往期教程: Go 语言教程–介绍(一)Go 语言教程–语言结构(二)Go 语言教程–语言结构(三)Go 语言教程–数据类型(四) 文章目录 变量声明多变量声明值类型和引用类型简短形…

【微服务】springboot 适配多数据源设计与实现

目录 一、问题背景 1.1 mysql读写分离 1.2 适配多种类型数据库 1.3 多数据源 二、适配多数据源场景和问题 2.1 支持快速切换其他数据源 2.2 代码层面最小化改造 2.3 数据迁移问题 2.4 跨库事务问题 三、多数据源适配解决方案 3.1 自己造轮子 3.2 基于providerId方式…

年少轻狂,中年失意,晚年凄惨的杜甫

诗圣杜甫的一生,几乎和苦难、倒霉紧紧拴在了一起。 裘马轻狂,恣意漫游的青年 公元712年,发生了两件值得历史铭记的大事情。第一件事,唐玄宗在这一年继位;第二件事,伟大的诗人杜甫在这一年出生。 杜甫字子…

openstack平台IsolatedHostsFilter的使用记录

文章目录 前言已有的经验思路一:image元数据思路二:flavor元数据思路三、IsolatedHostsFilter:使用filter来限制总结 前言 甲方的云平台新到了一些海光的机器,希望能加入到已有的计算集群里面。问题不大,但是有些小的…

怎么开发zblog插件?

要开发 ZBlog 插件,可以按照以下步骤进行: 1. 创建插件目录:在 ZBlog 的插件目录中创建一个新的目录,目录名称即为插件的名称,例如 "myplugin"。 2. 创建插件入口文件:在插件目录下创建一个 PHP …

Android Studio实现内容丰富的安卓宿舍管理平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号086 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.报…

docker 教程笔记,win11

1、如何执行container 当git clone一个带Dockerfile的项目时,先打开终端,跳转到该项目文件夹。 使用如下命令构建镜像image docker build -t project_name . 注: project_name为该项目名,后面必须要有空格和点。 执行完毕后&#…

「TCG 规范解读」TCG 规范架构概述(下)

修订历史: 2023.3.4 2023.6.18 2023.7.2 可信计算组织(Ttrusted Computing Group, TCG)是一个非盈利的工业标准组织,它的宗旨是加强不同计算机平台上计算环境的安全性。TCG 于 2003 年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance, TCPA)…

python函数的基本定义

python定义函数的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(); 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数; 函数的第一行语句可以选择性地使用文档字符串—用于存放函数…

Axure设计之文章目录动态定位导航教程

博客类型的内容网站,文章目录能很好的提升用户体验,通过目录可以清除整体结构,还可以通过目录进行导航,定位要浏览内容所在位置。下面通过Axure工具使用简单的元件实现文章目录导航的效果。 一、案例效果 1、页面左侧为文章目录&a…

Spring 系列1 -- 初识Spring

目录 1. Spring是什么? 2. DI 概念说明 3. 总结 1. Spring是什么? 我们通常所说的Spring指的是Spring Framework(Spring框架),他是一个开源框架,有着庞大的社区.Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应用程序开发起来更简单.用一句话来概述就是Spri…

nginx缓存配置

nginx缓存配置 在http模块下配置在server模块下配置简单验证下nginx服务器配置客户机访问nginx缓存服务器 在http模块下配置 注意/data/nginx/cache要自己创建 http {proxy_cache_path /data/nginx/cache levels1:2 keys_zonemy_cache:10m max_size10g inactive60m use_temp_…

Kafka基础入门篇

一、kafka简介 其主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能高吞吐率。即使在非常廉价的机器上也能做到单机支持每秒100K条消息的传输支持Kafka Server间的消息分区,及分…

资源释放的方式

资源释放通常指的是关闭文件、网络连接、数据库连接等资源,以释放系统资源并防止资源泄漏。 1:try-catch-finally finally:在异常处理时提供finally块来执行所有清除操作,比如IO流中的释放资源特点:被finally控制的语句最终一定…

浅析高速公路隧道变电所智能照明控制方案

【摘要】:目前公路隧道无人值守变电所均已设置了视频监控设施,在日常运营中由于光线不足,隧道监控室人员无法远程巡视,存在监控的盲检、漏检问题。该问题存在是由于传统照明方式无法完远程开启照明设施,文章针对该问题…

FPGA入门系列12--RAM的使用1

文章简介 本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码…

使用linux的系统驱动点灯

使用linux的系统驱动点亮开发板的灯 **要求:**使用linux驱动点亮开发板的灯 实验现象 (LED1没亮是因为本人的开发板LED1物理损坏) head.h代码 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct{volatile unsigned int moder;volatil…