Accediendo a archivos de imagen en nextcloud#
Este notebook demostrará cómo descargar archivos de un servidor nextcloud, cómo procesarlos localmente y subir los resultados de vuelta al servidor.
Si trabajas o estudias en la Universidad de Leipzig, puedes registrarte para obtener una cuenta en dicho servidor aquí.
from skimage.io import imread, imsave
from skimage.measure import label
import ipywidgets as widgets
import stackview
import nextcloud_client
Inicio de sesión#
Después de ejecutar la siguiente celda localmente, verás tres campos de entrada donde podrás ingresar la URL del servidor, el nombre de usuario y la contraseña.

server_widget = widgets.Text(value='https://speicherwolke.uni-leipzig.de', description='Server')
username_widget = widgets.Text(description='Username:')
password_widget = widgets.Password(description='Password')
widgets.VBox([server_widget, username_widget, password_widget])
NO presiones Shift-Enter después de ingresar el nombre de usuario y la contraseña
if username_widget.value == '':
raise RuntimeError('Enter username and password above')
ncc = nextcloud_client.Client(server_widget.value)
ncc.login(username_widget.value, password_widget.value)
# reset password
password_widget.value = ""
Un mensaje de error típico es 401: Acceso denegado. Verifica tu nombre de usuario y contraseña.
Recuperando un archivo#
Podemos descargar un archivo a un directorio local.
# enter the source file here
remote_source_file = '/data/blobs.tif'
# enter the destination
local_file = 'blobs.tif'
ncc.get_file(remote_path=remote_source_file,
local_file=local_file)
True
Procesamiento de imágenes#
Como hemos descargado el archivo, el procesamiento de imágenes funciona como de costumbre.
image = imread(local_file)
stackview.insight(image)
|
|
|
labels = label(image > image.max() / 2)
stackview.insight(labels)
|
|
|
Subiendo resultados#
Antes de subir una imagen a la nube, necesitamos guardarla localmente.
local_file_to_upload = "blobs_labels.tif"
imsave(local_file_to_upload, labels, check_contrast=False)
Subiremos el archivo a esta carpeta:
remote_folder
'/data/'
ncc.put_file(remote_folder, local_file_to_upload)
True
Solo para asegurarnos, verificamos si el archivo llegó imprimiendo nuevamente los archivos en la carpeta.
for f in ncc.list(remote_folder):
print (f.path)
/data/blobs.tif
/data/blobs_labels.tif
Cierre de sesión#
Cuando hayas terminado, ¡cierra sesión!
ncc.logout()
True