import pandas as pd import matplotlib.pyplot as plt from PIL import Image import cv2 import gradio as gr def generate_medition(sample_img, Escala): # Guardar imagen de muestra im = Image.fromarray(sample_img) im.save("sample_image.jpg") fn = 'sample_image.jpg' filepath = '/content/sample_image.jpg' selected_samples = [] loaded_data_dict = {fn: {fn: {'img_file': filepath, 'Align_file': '', 'rel_file': fn, 'scale_factor': Escala, 'scale_from': 'default (1.0)'}}} alc_notebook_fxns.select_samples_fxn(loaded_data_dict, selected_samples) model_lib_loc = 'default' current_model_dict = {} alc_notebook_fxns.select_download_model_interface(current_model_dict, model_lib_loc) grain_metadata = catalog.Metadata(name='grain_meta', thing_classes=['grain']) predictor = non_std_cfgs.smart_load_predictor( current_model_dict['selected_config_yaml'], current_model_dict['selected_model_weights'], use_cpu=True, adj_nms_thresh='auto', adj_thresh_test='auto') print('Predictor loaded') Try_contrast_enhanced_subimage = True Try_Otsu_thresholding = True Save_polygons = True save_polys_bool = Save_polygons alt_methods = [Try_contrast_enhanced_subimage, Try_Otsu_thresholding] full_auto_str = '' plt.switch_backend('Agg') run_dir = gen_notebook_fxns.full_auto_proc('/content/', selected_samples, loaded_data_dict, predictor, save_polys_bool, alt_methods, full_auto_str, stream_output=False) filepath = run_dir + '/mask_images/' + fn + '/' + fn + '.png' im = Image.open(filepath) rgb_im = im.convert('RGB') rgb_im.save('imagef.jpg') imagef = '/content/imagef.jpg' img = cv2.imread(imagef, cv2.COLOR_BGR2RGB) # Carga de los datos de medición del fragmento de ripios de perforación file = run_dir + '/grain_dimensions/' + fn + '_grain_dimensions.csv' print(file) df = pd.read_csv(file) df = df.head() return img, df demo = gr.Interface(fn=generate_medition, inputs=[gr.Image(label="Imagen"), gr.Radio([1,2,3,4,5,6], label="Escala de la imagen")], outputs=[gr.Image(label="Fragmento medido"), gr.Dataframe(label="Tabla de datos")], title="MEDICIÓN DE IMÁGENES DE RIPIOS DE PERFORACIÓN", description='La siguiente interfaz medirá de forma automática fragmentos en imágenes de ripios de perforación. El usuario deberá ingresar en la parte de la izquierda la imagen a ser procesada y su escala en um/px, mientras que en la parte de la derecha se mostrará la imagen con el fragmento ya medido y una tabla con los parámetros medidos y calculados. Se recomienda ingresar imágenes sin ningún tipo de mediciones o símbolos ya que esto podría afectar en la predicción del modelo.', article='Nota: En el caso de ingresar imágenes que no tengan relación a muestras de ripios de perforación, los autores de esta aplicación no se hacen responsables por los resultados de estas, el modelo de medición de ripios de perforación está entrenado para dar un resultado.') demo.launch()