|
import gradio as gr |
|
import numpy as np |
|
from PIL import Image |
|
|
|
def get_pixel_value(img: np.ndarray, evt: gr.SelectData): |
|
""" |
|
Получает значение яркости пикселя по координатам клика. |
|
""" |
|
if img is None: |
|
return "Сначала загрузите карту глубины." |
|
|
|
|
|
x, y = evt.index |
|
|
|
|
|
|
|
|
|
|
|
if img.ndim == 3: |
|
pixel_value = img[y, x, 0] |
|
else: |
|
pixel_value = img[y, x] |
|
|
|
return f"Координаты (X, Y): ({x}, {y})\nЗначение глубины (яркость 0-255): {pixel_value}" |
|
|
|
|
|
with gr.Blocks(title="Измеритель Карты Глубины") as demo: |
|
gr.Markdown("# Интерактивный измеритель карты глубины") |
|
gr.Markdown( |
|
"Загрузите вашу черно-белую карту глубины. " |
|
"Кликните в любой точке на изображении, чтобы узнать значение яркости (условную глубину)." |
|
) |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
|
|
input_image = gr.Image(type="numpy", label="Загрузите вашу карту глубины") |
|
|
|
with gr.Column(): |
|
|
|
output_text = gr.Textbox(label="Результат измерения", interactive=False) |
|
|
|
|
|
|
|
input_image.select(get_pixel_value, [input_image], output_text) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |