<jupyter_start><jupyter_text>Para preprocesar los videos solo se tiene que ejecutar todas las sigueintes celdas   Tenga en cuenta los comentarios de la celda 2, dado que existen 5 parametros que puede modificar  **(Recuerde que todas las dependencias deben estar descargadas)**<jupyter_code>import dlib
import cv2
import os
import re
import json
from pylab import *
from PIL import Image, ImageChops, ImageEnhance
TRAIN="/train"
TEST="/test"<jupyter_output><empty_output><jupyter_text>Parametro 1: input_Real_Videos= aqui coloca el path donde se encuentran los videos reales   Parametro 2: input_Fake_Videos= aqui coloca el path donde se encuentran los videos falsos   Parametro 3: output_Images= aqui coloca el path donde desea guardar los resultados  *Nota: para el parametro 3, es importante que la carpeta no deba existir. El porgrama la crea automaticamente*   Parametro 4: num_faces= aqui coloca el numero de imagenes que desea obtener de cada video   Parametro 5: train= aqui coloca un valor entre 1% - 99% para el entrenamineto<jupyter_code>input_Real_Videos=os.getcwd()+"/Input/Real/"
input_Fake_Videos=os.getcwd()+"/Input/Fake/"
output_Images=os.getcwd()+"/output-ImagesOrganizado"
num_faces = 1
train=70<jupyter_output><empty_output><jupyter_text>*El sigueinte codigo se encarga de organizar todas las carpetas con las imagenes correspondientes**(No hace falta modificar nada aqui)*<jupyter_code>if(os.path.isdir(output_Images)==False and train>0 and train<100):
    list_of_train_data = [f for f in os.listdir(input_Fake_Videos)]
    size=len(list_of_train_data)
    temp =len([f for f in os.listdir(input_Real_Videos)])
    if(size<2 or temp<2):
        raise Exception('Pocos videos para el preprocesamiento')
    num=int(size*(train/100))
    data=TRAIN
    os.mkdir(output_Images)
    input_folder=input_Fake_Videos
    discern="/Fake"
    os.mkdir(output_Images+TRAIN)
    os.mkdir(output_Images+TEST)
    os.mkdir(output_Images+data+discern)
    os.mkdir(output_Images+data+discern+"/face")
    os.mkdir(output_Images+data+discern+"/frame")
    detector = dlib.get_frontal_face_detector()
    flag=True;
    x=1
    while(flag):
        for vid in list_of_train_data:
            if(x==num):
                data=TEST
                os.mkdir(output_Images+data+discern)
                os.mkdir(output_Images+data+discern+"/face")
                os.mkdir(output_Images+data+discern+"/frame")
            count = 0
            cap = cv2.VideoCapture(os.path.join(input_folder, vid))
            frameRate = cap.get(5)
            while cap.isOpened() and count < num_faces:
                frameId = cap.get(1)
                ret, frame = cap.read()
                if ret != True:
                    break
                if frameId % ((int(frameRate)+1)*1) == 0:
                    face_rects, scores, idx = detector.run(frame, 0)
                    for i, d in enumerate(face_rects):
                        x1 = d.left()
                        y1 = d.top()
                        x2 = d.right()
                        y2 = d.bottom()
                        if(x1>=0 and y1>=0 and x2>=0 and y2>=0):
                            crop_img = frame[y1:y2, x1:x2]
                            cv2.imwrite(output_Images+data+discern+"/frame/"+vid.split('.')[0]+'_'+str(count)+'.png', frame)
                            cv2.imwrite(output_Images+data+discern+"/face/"+vid.split('.')[0]+'_'+str(count)+'.png', cv2.resize(crop_img, (299, 299)))
                            count+=1
            x+=1
        f="\""+output_Images+TRAIN+discern+"/frame"+"\""
        c="\""+output_Images+TRAIN+discern+"/face"+"\""
        ff="\""+output_Images+TEST+discern+"/frame"+"\""
        cc="\""+output_Images+TEST+discern+"/face"+"\""
        %run -i ela.py --dir {f}
        %run -i ela.py --dir {c}
        %run -i ela.py --dir {ff}
        %run -i ela.py --dir {cc}
        if(discern=="/Fake"):
            discern="/Real"
            data=TRAIN
            x=1
            os.mkdir(output_Images+data+discern)
            os.mkdir(output_Images+data+discern+"/face")
            os.mkdir(output_Images+data+discern+"/frame")
            list_of_train_data = [f for f in os.listdir(input_Real_Videos)]
            size=len(list_of_train_data)
            num=int(size*(train/100))
            input_folder=input_Real_Videos
        else:
            flag=False
else:
    print("El ditectorio de salida ya existe o el valor de entrenamiento no es valido")<jupyter_output>PATH Images: /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/frame
PATH Final/home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/ELAWihtframe
Performing ELA on images at /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/frame
Finished!
Head to /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/ELA to check the results!
PATH Images: /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/face
PATH Final/home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/ELAWihtface
Performing ELA on images at /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/face
Finished!
Head to /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/train/Fake/ELA to check the results!
PATH Images: /home/icesi/Documents/DeepFakeFinal/Code/output-ImagesOrganizado/test/Fake/frame
PATH Final/home/icesi/Documents/DeepFakeFinal/Code/output-Ima[...]
{'fraction_non_alphanumeric': 0.11752915451895043, 'fraction_numerical': 0.012026239067055394, 'mean_word_length': 2.920714285714286, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '267713', 'license': 'MIT', 'n_tokens_mistral': 1890, 'n_tokens_neox': 1804, 'n_words': 374, 'path': 'Deepfake/Metodo_de_deteccion_de_Deepfake/Code/1_Preprocessing/preprocessing.ipynb', 'repo_name': 'i2tResearch/Ciberseguridad_web', 'size': '5488'}