import gradio as gr
from img_enhancement import Image_enhancement
"""1.3 对图像进行频率像素点操作:模糊、锐化、添加噪声、边缘检测等操作"""
# 类实例化
img_enhance = Image_enhancement()
def img_handle_3():
def pridict_1(query_image=None,method_1="高斯滤波",count=3):
if method_1 == "高斯滤波":
img_mohu = img_enhance.Gaussblur(query_image,count)
elif method_1 == "随机模糊":
img_mohu = img_enhance.Blur(query_image, count)
else: # 中值滤波
img_mohu = img_enhance.Medianblur(query_image, count=5)
return img_mohu
def pridict_2(query_image=None,method_2="robert"):
if method_2=="sobel":
img_out = img_enhance.sobel(query_image)
elif method_2=="Prewitt":
img_out = img_enhance.Prewitt(query_image)
else:#robert
img_out = img_enhance.robert(query_image)
return img_out
def pridict_3(query_image=None,method_3="高斯噪声",mean=0,sigma=30,percentage=10):
if method_3=="高斯噪声":
img_noise = img_enhance.add_gaussian_noise(query_image,mean,sigma)
elif method_3=="椒盐噪声":
img_noise = img_enhance.add_salt_and_pepper_noise(query_image, percentage)
else:# 均值噪声
img_noise = img_enhance.add_mean_noise(query_image, mean, sigma)
return img_noise
def pridict_4(query_image=None,method_4="yes"):
if method_4=="yes":
img_detect= img_enhance.Canny(query_image)
else: #no
img_detect = query_image
return img_detect
title = "
图像处理操作3:频率像素点操作
"
description = "3.对图像进行频率像素点操作:模糊、锐化、添加噪声、边缘检测等操作"
with gr.Blocks() as demo:
gr.Markdown(title)
gr.Markdown(description)
with gr.Row():
with gr.Column(scale=1):
img = gr.components.Image(label="图片")
method_1 = gr.components.Radio(label="模糊算法选择", choices=["高斯滤波", "随机模糊","中值滤波"],
value="高斯滤波", )
count = gr.components.Slider(minimum=0, maximum=8, step=1, value=3, label="模糊次数")
btn_1 = gr.Button("模糊处理", )
method_2 = gr.components.Radio(label="算子选择", choices=["sobel", "Prewitt","robert"],
value="robert",)
btn_2 = gr.Button("锐化处理", )
method_3 = gr.components.Radio(label="添加噪声类型选择", choices=["高斯噪声", "椒盐噪声", "均值噪声"],
value="高斯噪声", )
mean = gr.components.Slider(minimum=0, maximum=100, step=2, value=0, label="均值")
sigma = gr.components.Slider(minimum=0, maximum=100, step=2, value=30, label="标准差")
percentage = gr.components.Slider(minimum=0, maximum=100, step=5, value=30, label="百分比")
btn_3 = gr.Button("添加噪声", )
method_4 = gr.components.Radio(label="是否边缘检测", choices=["yes","no"],
value="yes", )
btn_4 = gr.Button("边缘检测", )
with gr.Column(scale=1):
out = gr.components.Image(label="处理后的图片为", height="auto")
btn_1.click(fn=pridict_1, inputs=[img, method_1,count], outputs=out)
btn_2.click(fn=pridict_2, inputs=[img, method_2], outputs=out)
btn_3.click(fn=pridict_3, inputs=[img, method_3,mean,sigma,percentage], outputs=out)
btn_4.click(fn=pridict_4, inputs=[img,method_4], outputs=out)
return demo
if __name__ == "__main__":
with gr.TabbedInterface(
[img_handle_3()],
["图像处理3:频率像素点操作"],
) as demo:
demo.launch()