Zugriff auf Bilddateien in der Nextcloud#
In diesem Notebook werden wir zeigen, wie man Dateien von einem Nextcloud-Server herunterlädt, wie man sie lokal verarbeitet und die Ergebnisse wieder auf den Server hochlädt.
Wenn Sie an der Universität Leipzig arbeiten oder studieren, können Sie sich hier für ein Konto auf einem solchen Server anmelden.
from skimage.io import imread, imsave
from skimage.measure import label
import ipywidgets as widgets
import stackview
import nextcloud_client
Anmeldung#
Nach Ausführung der nächsten Zelle lokal werden Sie drei Eingabefelder sehen, in die Sie die Server-URL, den Benutzernamen und das Passwort eingeben können.
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])
Drücken Sie NICHT Shift-Enter nach der Eingabe von Benutzername und Passwort
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)
# Passwort zurücksetzen
password_widget.value = ""
Eine typische Fehlermeldung ist 401: Zugriff verweigert. Überprüfen Sie Ihren Benutzernamen und Ihr Passwort.
Durchsuchen des Remote-Servers#
Um zu sehen, ob die Verbindung erfolgreich war, können wir einfach die Dateien in einem bestimmten Ordner auflisten.
# Geben Sie einen Ordner auf dem owncloud-Laufwerk ein, der existiert. '/' ist der Stammordner.
remote_folder = "/data/"
for f in ncc.list(remote_folder):
print (f.path)
/data/blobs.tif
Abrufen einer Datei#
Wir können eine Datei in ein lokales Verzeichnis herunterladen.
# Geben Sie hier die Quelldatei ein
remote_source_file = '/data/blobs.tif'
# Geben Sie das Ziel ein
local_file = 'blobs.tif'
ncc.get_file(remote_path=remote_source_file,
local_file=local_file)
True
Bildverarbeitung#
Da wir die Datei heruntergeladen haben, funktioniert die Bildverarbeitung wie gewohnt.
image = imread(local_file)
stackview.insight(image)
|
labels = label(image > image.max() / 2)
stackview.insight(labels)
|
Ergebnisse hochladen#
Bevor wir ein Bild in die Cloud hochladen, müssen wir es lokal speichern.
local_file_to_upload = "blobs_labels.tif"
imsave(local_file_to_upload, labels, check_contrast=False)
Wir werden die Datei in diesen Ordner hochladen:
remote_folder
'/data/'
ncc.put_file(remote_folder, local_file_to_upload)
True
Um sicherzugehen, überprüfen wir, ob die Datei angekommen ist, indem wir die Dateien im Ordner erneut ausgeben.
for f in ncc.list(remote_folder):
print (f.path)
/data/blobs.tif
/data/blobs_labels.tif
Abmelden#
Wenn Sie fertig sind, melden Sie sich ab!
ncc.logout()
True