Spaces:
Running
Running
File size: 4,138 Bytes
c58ee4b 3fe2685 c58ee4b 405bf22 c58ee4b 3fe2685 c58ee4b 3fe2685 d82549a 3fe2685 f32bb3e 3fe2685 f32bb3e 3fe2685 c58ee4b 3fe2685 c58ee4b 3fe2685 c58ee4b 3fe2685 d82549a 3fe2685 c58ee4b 3fe2685 c58ee4b 3fe2685 c58ee4b f32bb3e c58ee4b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import gradio as gr
from rapid_undistorted.inference import InferenceEngine
import numpy as np
# 初始化模型
engine = InferenceEngine("config.yaml")
# 添加示例
example_images = [
"images/demo.jpg",
"images/demo1.jpg",
"images/demo1.png",
"images/demo2.png",
"images/demo3.jpg",
]
# 定义任务和模型选项
tasks = {
"unwrap": ["UVDoc", None],
"unshadow": ["GCDnet", None],
"unblur": ["OpenCvBilateral", "NAFDPM", None],
"binarize": ["UnetCnn", None]
}
def process_image(img_path, unwrap_model, unshadow_model, binarize_model, unblur_model):
task_list = []
if unwrap_model:
task_list.append(("unwrap", unwrap_model))
if unshadow_model:
task_list.append(("unshadow", unshadow_model))
if binarize_model:
task_list.append(("binarize", binarize_model))
if unblur_model:
task_list.append(("unblur", unblur_model))
unwrapped_img, elapse = engine(img_path, task_list)
print(f"doc unwrap elapse: {elapse}")
return unwrapped_img.astype(np.uint8),elapse
def main():
# 定义Gradio界面
with gr.Blocks(css="""
.scrollable-container {
overflow-x: auto;
white-space: nowrap;
}
.header-links {
text-align: center;
}
.header-links a {
display: inline-block;
text-align: center;
margin-right: 10px; /* 调整间距 */
}
""") as demo:
gr.HTML(
"<h1 style='text-align: center;'><a href='https://github.com/Joker1212/RapidUnWrap'>RapidUnDistort</a></h1>"
)
gr.HTML('''
<div class="header-links">
<a href=""><img src="https://img.shields.io/badge/Python->=3.8,<3.13-aff.svg"></a>
<a href=""><img src="https://img.shields.io/badge/OS-Linux%2C%20Mac%2C%20Win-pink.svg"></a>
<a href="https://semver.org/"><img alt="SemVer2.0" src="https://img.shields.io/badge/SemVer-2.0-brightgreen"></a>
<a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
<a href="https://github.com/RapidAI/TableStructureRec/blob/c41bbd23898cb27a957ed962b0ffee3c74dfeff1/LICENSE"><img alt="GitHub" src="https://img.shields.io/badge/license-Apache 2.0-blue"></a>
</div>
''')
with gr.Row():
with gr.Column(scale=1): # 左边占1/3
img_input = gr.Image(label="Upload or Select Image", sources="upload", value="images/demo1.jpg")
# 示例图片选择器
examples = gr.Examples(
examples=example_images,
examples_per_page=len(example_images),
inputs=img_input,
fn=lambda x: x, # 简单返回图片路径
outputs=img_input,
cache_examples=False
)
unwrap_dropdown = gr.Dropdown(label="Select Unwrap Model", choices=tasks["unwrap"], value="UVDoc")
unshadow_dropdown = gr.Dropdown(label="Select Unshadow Model", choices=tasks["unshadow"], value="GCDnet")
binarize_dropdown = gr.Dropdown(label="Select Binarize Model", choices=tasks["binarize"], value=None)
unblur_dropdown = gr.Dropdown(label="Select Unblur Model", choices=tasks["unblur"], value="OpenCvBilateral")
run_button = gr.Button("summit")
with gr.Column(scale=2): # 右边占2/3
output_image = gr.Image(label="output")
elapse_textbox = gr.Textbox(label="Elapsed Time", interactive=False)
# 绑定按钮点击事件
run_button.click(fn=process_image, inputs=[img_input, unwrap_dropdown, unshadow_dropdown, binarize_dropdown, unblur_dropdown],outputs=[output_image, elapse_textbox])
# 启动应用
demo.launch()
if __name__ == '__main__':
main()
|