|
|
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): |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
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() |
|
|
|