Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ws2122:asciia:ascii-animation.py [2022/03/17 15:08] MoscarTU |
ws2122:asciia:ascii-animation.py [2022/03/30 08:23] (aktuell) MoscarTU |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
===== ASCII-Animation.py ===== | ===== ASCII-Animation.py ===== | ||
+ | Diese Datei ist die Hauptdatei unseres Programms ASCIÌ-Animation. Sie muss ausgeführt werden, um das Programm zu starten. Neben der Main-Methode werden noch einige Hilfsfunktionen, unter anderem für eine kleine Benutzeroberfläche, implementiert. | ||
<code python> | <code python> | ||
import cv2 # muss extra installiert werden mit: pip install opencv-python | import cv2 # muss extra installiert werden mit: pip install opencv-python | ||
Zeile 19: | Zeile 19: | ||
abh.Abbruchsignal() | abh.Abbruchsignal() | ||
</code> | </code> | ||
- | An dieser Stelle werden lediglich externe Bibliotheken und unsere Hilfsdateien importiert. | + | An dieser Stelle werden lediglich externe Bibliotheken und unsere Hilfsdateien importiert. Beachtet werden muss nur, dass cv2 (opencv), readchar und pyfiglet standardmäßig nicht bei Python installiert sind. |
<code python> | <code python> | ||
# Methode für korrekte Eingabe der Ja/Nein Abfragen, ArtZahl ist für welche Eingabe gemeint ist (beliebig erweiterbar) | # Methode für korrekte Eingabe der Ja/Nein Abfragen, ArtZahl ist für welche Eingabe gemeint ist (beliebig erweiterbar) | ||
Zeile 72: | Zeile 72: | ||
break | break | ||
</code> | </code> | ||
- | Diese Funktion ist für das Speichern der Frames aus dem Video zuständig. Das wird weiter unten ein zusätzlicher Thread für die Methode ausgeführt, sodass dieses hier mit dem Umwandeln der Frames zu ASCII und anschließender Ausgabe gleichzeitig passieren kann. | + | Diese Funktion ist für das Speichern der Frames aus dem Video zuständig. Weiter unten wird ein zusätzlicher Thread für die Methode ausgeführt, sodass das Umwandeln der Frames zu ASCII und die anschließende Ausgabe gleichzeitig passieren kann. |
<code python> | <code python> | ||
# main | # main | ||
Zeile 155: | Zeile 155: | ||
t1.join() # Thread Ende bei erfolgreichen Abschließen der Schleifen | t1.join() # Thread Ende bei erfolgreichen Abschließen der Schleifen | ||
- | shutil.rmtree('Bildercache') # Löscht kompletten Cacheordner | + | shutil.rmtree('Bildercache') # Löscht kompletten Bildercache |
print(Style.RESET_ALL) | print(Style.RESET_ALL) | ||
</code> | </code> | ||
- | Die for-Schleife geht alle Frames durch und ruft jedes mal die Datei "AsciiBildConverter" auf, in der ein "normales" Bild zu einem ASCII-Bild umgewandelt wird. Dabei haben wir noch einen Timer implementiert, welcher die Zeit misst, damit die Videowiedergabe annähernd wie die vom Originalvideo ist. Allerdings ist das immer noch nicht optimal, weil die Berechnung dafür auch Mikrosekunden benötigt. | + | Die for-Schleife geht alle Frames durch und ruft jedes mal die Datei "AsciiBildConverter" auf, in der ein "normales" Bild zu einem ASCII-Bild umgewandelt wird. Durch die for-Schleife werden die Bilder sehr schnell umgewandelt und auf der Konsole hintereinander ausgegeben, wodurch es wie ein Video aussieht. Dabei haben wir noch einen Timer implementiert, welcher die Zeit misst, damit die Videowiedergabe annähernd wie die vom Originalvideo ist. Allerdings ist das immer noch nicht optimal, weil die Berechnung dafür auch Mikrosekunden benötigt. |
Am Programmende wird der Cache mit den Bildern gelöscht. | Am Programmende wird der Cache mit den Bildern gelöscht. | ||
+ | Tipp: Bei einer Pause oder am Ende des Programms die Anaconda hochscrollen, dadurch wird sichtbar, dass es wie ein "Daumenkino" ist. |