Seite 1 von 1

Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 16:34
von nikh22
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 ?

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 16:47
von __deets__
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.

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 16:55
von nikh22
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

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 17:04
von __blackjack__
@nikh22: Der Netzwerkdateiname wird so einfach nicht funktionieren, womit `mask` dann ein leeres Array enthält.

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 17:20
von nikh22
__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?

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 17:21
von sparrow
@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.

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 17:26
von nikh22
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

Re: Dateizugriff WSL Ubuntu

Verfasst: Dienstag 18. April 2023, 17:41
von sparrow
@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.