Dateizugriff WSL Ubuntu

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nikh22
User
Beiträge: 28
Registriert: Montag 27. Juni 2022, 15:46

Neuer Tag neues Glück,

mein Interpreter ist in WSL Ubuntu in Conda installiert. VsCode läuft über Windows. (beides auf Festplatte C)
Folgender wirklich einfach code macht mir Probleme.

Code: Alles auswählen

# Load Mask
# mask = cv.imread(r'/mnt/e/Projekt/Mask/mask_final.png')
mask = cv.imread(r'\\wsl.localhost\Ubuntu\home\niklas\PythonProject\Mask\mask_final.png')
# Convert to Grayscale
mask_gray = cv.cvtColor(mask, cv.COLOR_BGR2GRAY)
Fehlercode:

Code: Alles auswählen

/home/niklas/miniconda3/envs/dup/bin/python /home/niklas/PythonProject/cloud-detection/dataset_creation.py
[ WARN:0@0.363] global loadsave.cpp:244 findDecoder imread_('\\wsl.localhost\Ubuntu\home\niklas\PythonProject\Mask\mask_final.png'): can't open/read file: check file path/integrity
Traceback (most recent call last):
  File "/home/niklas/PythonProject/cloud-detection/dataset_creation.py", line 16, in <module>
    mask_gray = cv.cvtColor(mask, cv.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.7.0) /home/conda/feedstock_root/build_artifacts/libopencv_1675729947212/work/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
Dieser deutet darauf hin dass die Datei nicht gelesen werden kann , was mache ich bei der Angabe des Pfades falsch? Oder muss ich noch irgendwelche Berechtigungen zuweisen dass systemübergreifend auf den Pfad zugegriffen werden kann ?

Ursprünglich war die Datei auf der Festplatte E gespeichert, da der Zugriff nicht geklappt hat, hab ich die Datei zu Testzwecken in WSL Ubuntu (Festplatte C) selbst gepackt auch ohne Erfolg.

Jemand eine Idee was ich falsch mache ?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich arbeite nicht mit WSL, war nie noetig bzw. ich benutze Ubuntu, wenn ich Ubuntu benutzen will. Darum weiss ich nicht, wie man sowas loest. Aber *was* ich weiss ist, dass man problemlos mit Python und der OpenCV unter Windows arbeiten kann. Denn das habe ich schon gemacht. Warum also dieser eingesprungene Rueckwaertssalto mit der WSL? Arbeite doch einfach unter Windows, und gut ist.
nikh22
User
Beiträge: 28
Registriert: Montag 27. Juni 2022, 15:46

In einer anderen Datei brauche ich GPU beschleunigte Bibliothek Cuda ML und da wird auch eine Datei eingelesen. Das hier dient eher als Testlauf und richtet sich nicht zwingend an die OpenCV Bibliothek sondern eher auf das Einlesen von Dateien bei WSL Ubuntu
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@nikh22: Der Netzwerkdateiname wird so einfach nicht funktionieren, womit `mask` dann ein leeres Array enthält.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
nikh22
User
Beiträge: 28
Registriert: Montag 27. Juni 2022, 15:46

__blackjack__ hat geschrieben: Dienstag 18. April 2023, 17:04 @nikh22: Der Netzwerkdateiname wird so einfach nicht funktionieren, womit `mask` dann ein leeres Array enthält.
Und wie kann ich die Datei dann einlesen?
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@nikh22: Vor allem ist es unnötig auf die Netzwerkfreigabe zu gehen. Du bist ja schon auf dem Zielsystem. Dann kannst du doch da einfach die Datei ohne Umweg über ein Share öffnen.
nikh22
User
Beiträge: 28
Registriert: Montag 27. Juni 2022, 15:46

Danke für eure Hilfe aber ich bräuchte eine etwas genauere Erklärung, bin noch nicht lange am programmieren und verstehe aktuell leider nur die Hälfte.

mask = cv.imread('/mnt/e/Projekt/Mask/mask_final.png')

Der obige Zugriff bringt mich auch nicht weiter, falls es das ist was du meintest.

Außerdem ,der Befehl

Code: Alles auswählen

ls -lh /mnt/e/Projekt/Mask/mask_final.png
in der Ubuntu Command Prompt
gibt folgenden Fehler aus

Code: Alles auswählen

cannot access '/mnt/e/Projekt/Mask/mask_final.png': No such file or directory
Wenn ich aber folgenden Pfad in meinem Windows Explorer eingebe

Code: Alles auswählen

E:\Projekt\Mask\mask_final.png
öffnet sich genau das gewünschte Bild
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@nikh22: Wenn du Linux benutzt, wirst du dich auch rudimentär damit auseinander setzen müssen. Das Betriebssystem ist auch ein Werkzeug der Enwicklung - und Werkzeuge muss man kennen.

`\\wsl.localhost\Ubuntu\home\niklas\PythonProject\Mask\mask_final.png` greift auf eine Windows Netzwerkfreigabe zu. Also wahrscheinlich um von Windows aus auf das System in der WSL zugreifen zu können.
Du _bist_ aber gar nicht mehr in Windows. Du führst ein Programm _in dem System im WSL_ aus.

Der Pfad, von dem du ausführst lautet `/home/niklas/PythonProject/cloud-detection/dataset_creation.py` (das steht in der Fehlermeldung).
Fallen dir Gemeinsamkeiten zu dem Pfad auf, den du erreichen möchtest?

Wenn also die Datei da ist, wo du sie vermutest, sollte sie unter `/home/niklas/PythonProject/Mask/mask_final.png` zu finden sein.
Linux, im Gegensatz zu Windows, unterscheidet im Dateisystem übrigens zwischen Groß und Kleinschreibung.
Antworten