AutoQuad / app.py
Can Günen
changed the variables names and fixed some functions
64dc6be
import gradio as gr
from distortion import generate_matrix, corner_tab, correct_image, slider, color_tab
CHESSBOARD_TUTORIAL = '''##### Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed tempus dignissim odio, at elementum erat vulputate sit amet. Vestibulum sodales viverra fermentum. In ac hendrerit dolor, vitae mattis odio. Maecenas suscipit consectetur suscipit. Curabitur sodales dui eget neque venenatis tincidunt. In sed libero mi. Nam sollicitudin metus urna, sit amet sagittis ex laoreet sed.
Pellentesque nunc turpis, porta ut accumsan eget, iaculis nec odio. Praesent fringilla a sem sed elementum. Proin orci justo, rutrum et feugiat eleifend, auctor sed odio. Maecenas posuere urna tortor, ut euismod ligula mattis sed. Sed ipsum velit, pretium sed lacinia sed, placerat eget urna. Mauris lobortis mi vitae odio luctus viverra sed eget urna. Pellentesque blandit semper felis sed congue. Aenean congue enim id euismod finibus.
Aliquam finibus accumsan orci, vitae pellentesque ex fringilla a. Fusce fermentum, arcu sit amet dapibus lacinia, lacus enim maximus ipsum, vitae consectetur ligula odio non dolor. Donec sed felis eget odio dignissim sagittis. Pellentesque non nunc hendrerit odio mattis finibus. Quisque tellus massa, aliquet a condimentum ut, faucibus vel leo. Aliquam quis dui sed felis viverra fringilla. Vestibulum volutpat sem ut tortor mollis facilisis. Mauris pharetra elit a purus pulvinar, eget interdum orci feugiat. Vestibulum auctor gravida ante. Curabitur a elit efficitur, vestibulum neque quis, imperdiet turpis. Donec enim magna, rutrum ut finibus sit amet, mollis non magna. Ut quis magna velit. Mauris varius dolor in mauris faucibus, dignissim blandit nibh dapibus. Quisque dictum risus sit amet est finibus, a feugiat enim imperdiet.
Quisque vitae lacus ac nunc hendrerit consequat. Donec rhoncus ultrices erat, vitae commodo quam volutpat et.
'''
with gr.Blocks() as demo:
title = """<p><h1 align="center" style="font-size: 36px;">Auto Align Quadrilateral Workpieces</h1></p>"""
gr.HTML(title)
with gr.Tab("Color Alignment"):
title = """<p><h1 align="center" style="font-size: 24px;">We will use this tab to align the workpieces after masking wit slider inputs</h1></p>"""
gr.HTML(title)
with gr.Row():
with gr.Column():
unmasked_distorted_image = gr.Image(label="Unmasked + Distorted Image", type="filepath")
masked_distorted_image = gr.Image(label="Masked + Distorted Image", type="filepath")
camera_matrix = gr.File(label="Camera Matrix", type="file")
detected_shape = gr.Image(label="Detected Shape")
with gr.Column():
first_slider = gr.Slider(0,255, value=0, label="1. Slider")
second_slider = gr.Slider(0,255, value=0,label="2. Slider")
third_slider = gr.Slider(0,255, value=0,label="3. Slider")
forth_slider = gr.Slider(0,255, value=255,label="4. Slider")
fifth_slider = gr.Slider(0,255, value=255,label="5. Slider")
sixth_slider = gr.Slider(0,255, value=255,label="6. Slider")
generate_dxf = gr.Button("Generate DXF File")
dxf_file = gr.File(label="Generated DXF file", type="file")
generate_dxf.click(fn=color_tab, inputs=[masked_distorted_image, camera_matrix], outputs=[dxf_file, detected_shape])
first_slider.change(slider, inputs=[unmasked_distorted_image, first_slider, second_slider, third_slider, forth_slider, fifth_slider, sixth_slider], outputs=[masked_distorted_image])
second_slider.change(slider, inputs=[unmasked_distorted_image, first_slider, second_slider, third_slider, forth_slider, fifth_slider, sixth_slider], outputs=[masked_distorted_image])
third_slider.change(slider, inputs=[unmasked_distorted_image, first_slider, second_slider, third_slider, forth_slider, fifth_slider, sixth_slider], outputs=[masked_distorted_image])
forth_slider.change(slider, inputs=[unmasked_distorted_image, first_slider, second_slider, third_slider, forth_slider, fifth_slider, sixth_slider], outputs=[masked_distorted_image])
fifth_slider.change(slider, inputs=[unmasked_distorted_image, first_slider, second_slider, third_slider, forth_slider, fifth_slider, sixth_slider], outputs=[masked_distorted_image])
sixth_slider.change(slider, inputs=[unmasked_distorted_image, first_slider, second_slider, third_slider, forth_slider, fifth_slider, sixth_slider], outputs=[masked_distorted_image])
with gr.Tab("Corner Allignment"):
with gr.Row():
with gr.Column():
title = """<p><h1 align="center" style="font-size: 24px;">First, let's correct the distorted Image</h1></p>"""
gr.HTML(title)
distorted_image = gr.Image(label="Distorted Image", type="filepath")
yml_input = gr.File(label="Camera Matrix", type="file")
correct_button = gr.Button("Correct Image")
with gr.Column():
title = """<p><h1 align="center" style="font-size: 24px;">Then mark the corners of the Workpiece</h1></p>"""
gr.HTML(title)
corrected_image = gr.Image(label="Corrected Image")
dxf_output = gr.File(type="file")
corrected_image.select(corner_tab, [corrected_image], dxf_output)
correct_button.click(fn=correct_image, inputs=[distorted_image, yml_input], outputs=corrected_image)
with gr.Tab("Matrix Generation"):
with gr.Row():
with gr.Column():
distorted_image = gr.Image(label="Chessboard Image", type="filepath")
with gr.Row():
chess_vert_input = gr.Textbox(label="Number of squares in vertical direction")
chess_horz_input = gr.Textbox(label="Number of squares in horizontal direction")
yaml_button = gr.Button("Generate the YML File")
yaml_file = gr.File(label="YML File")
yaml_button.click(generate_matrix, inputs=[distorted_image, chess_vert_input, chess_horz_input], outputs= yaml_file)
with gr.Column():
gr.Markdown(CHESSBOARD_TUTORIAL)
demo.launch(debug=True)