接上文“Gradio:利用纯python代码创建Web应用最简单的包”本文进一步介绍Gradio包的使用。
1、多个输入与多个输出
当需要多个输入和多个输出时
import gradio as gr
def greet(name, is_morning, temperature):
salutation = "Good morning" if is_morning else "Good evening"
greeting = f"{salutation} {name}. It is {temperature} degrees today"
celsius = (temperature - 32) * 5 / 9
return greeting, round(celsius, 2)
demo = gr.Interface(
fn=greet,
inputs=["text", "checkbox", gr.Slider(0, 100)],
outputs=["text", "number"],
)
demo.launch()
演示结果:
2、输入图片和返回图片
当输入为图片,返回也是图片时:
import numpy as np
import gradio as gr
def sepia(input_img):
"""对输入图片进行滤镜处理"""
sepia_filter = np.array([
[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]
])
sepia_img = input_img.dot(sepia_filter.T)
sepia_img /= sepia_img.max()
return sepia_img
demo = gr.Interface(sepia, gr.Image(), "image")
demo.launch()
演示结果:
输入组件使用Image时,处理函数得到的是NumPy数组,其形状为3元组(高, 宽,RGB值),返回使用“Image”组件得到的也是一个NumPy数组。
若想输入是图片路径而不是NumPy数组,可以设置type='filepath',如下:
gr.Image(type="filepath")
3、添加示例
为了方面用户理解,有时需要添加示例数据,此时需要为Interface实例添加examples参数:
import gradio as gr
def calculator(num1, operation, num2):
if operation == "add":
return num1 + num2
elif operation == "subtract":
return num1 - num2
elif operation == "multiply":
return num1 * num2
elif operation == "divide":
if num2 == 0:
raise gr.Error("Cannot divide by zero!")
return num1 / num2
demo = gr.Interface(
calculator,
[
"number",
gr.Radio(["add", "subtract", "multiply", "divide"]),
"number"
],
"number",
examples=[
[45, "add", 3],
[3.14, "divide", 2],
[144, "multiply", 2.5],
[0, "subtract", 1.2],
],
title="Toy Calculator",
description="Here's a sample toy calculator.",
examples_per_page=2, # 为示例数据设置分页值,每页2个
)
demo.launch()
演示结果:
标签:Web,return,gr,img,python,demo,Gradio,sepia,num2 From: https://blog.csdn.net/w1206143866/article/details/143161495