Neler yeni

Python Video To Ascii Converter

dexStap

Yazar
Katılım
28 Ocak 2022
Mesajlar
57
Tepkime puanı
133
Puanları
350
Kodu ve videoyu aynı klasörde tutunuz
çekirdek miktarı = daha hızlı sonuç ~ 420 kare/dakika

Python:
import os
import sys
import cv2
from PIL import Image
from multiprocessing import Process, cpu_count
import time


class run:
    def __init__(self):
        file_name = input("file name:")
        self.size = 7
        self.starttop = 0
        self.count = 0
        rc = 0
        self.c = [" ", ".", ".", "-", "+", "o", "U", "Ş", "@", "@", "@", "@", "@", "@"]
        vidcap = cv2.VideoCapture(file_name)
        success, image1 = vidcap.read()
        self.fps = 1
        print("Reading frames")
        while success:
            cv2.imwrite("frame%d.jpg" % self.count, image1)  # save frame as JPEG file
            success, image1 = vidcap.read()
            self.count += 1
            for i in range(self.fps):vidcap.read()
            rc += self.fps
        print("done!")

        self.allims = [i for i in range(0,rc,self.fps)]
        self.allims.pop()
        print(len(self.allims))
    def read_image(self,i, z):
        l = []
        for image in range(i * int(len(self.allims) / cpu_count()), (i + 1) * int(len(self.allims) / cpu_count()), self.fps):
            img = Image.open(f"frame{image}.jpg")
            last = ""
            for y in range(self.starttop, int(img.size[1] / self.size)):
                for x in range(int(img.size[0] / self.size)):
                    s = 0
                    for yy in range(self.size - 1):
                        for xx in range(self.size - 1):
                            s += sum(img.getpixel((x * self.size + xx, y * self.size + yy)))

                    last += self.c[int(s / int((765 * (self.size) ** 2) / len(self.c)))]
                last += "\n"
            img.close()
            os.system("")
            l.append(last)
        file1 = open(f"core-{i}.txt", "w+")
        file1.write("".join(l))
        file1.close()
    def main(self):
        threads = []
        for i in range(cpu_count()):
            b = Process(target=self.read_image,args=(i,None))
            threads.append(b)
        for i in threads:
            i.start()
        for i in threads:
            i.join()



        os.system("cls")
        zzz = open("core-0.txt","r")
        img = Image.open("frame0.jpg")
        height = int(img.size[1] / self.size)
        img.close()
        print(height)
        zzz.close()
        print("a")
        while True:
            for i in range(cpu_count()):
                file = open(f"core-{i}.txt","r+")
                z = file.read().replace("\n","i").split("i")
                t = []
                for i in range(0,len(z)-height,height):
                    t.append("\n".join(z[i:i+height]))
                for i,e in enumerate(t):
                   sys.stdout.write('\r')
                   sys.stdout.write("%s" % e)
                   sys.stdout.flush()
                   time.sleep(0.07)

                file.close()
            z = input("Again Y | N ?\n").lower()
            if z != "y":
                break

        for i in range(cpu_count()):
            os.remove(f"core-{i}.txt")
        for i in range(self.count):
            os.remove(f"frame{i}.jpg")



if __name__ == "__main__":
    run().main()
 

                                                                                                  

ByThon

Demir
Katılım
10 Nis 2022
Mesajlar
2
Tepkime puanı
0
Puanları
10
Çok güzel olmuş eline sağlık (y)
 

                                                                                                  
Moderatör tarafında düzenlendi:
Üst Alt