Python chemin d'accès introuvable

lilian_d57 -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour tout le monde, j'ai reçu un code Python que j'avais demandé à un ami. Il permet de modifier légèrement une vidéo dans un dossier INPUT et de la ressortir changée dans un dossier OUTPUT ensuite. Sur son PC ça marche mais sur mon PC à moi j'ai un problème avec le chemin des fichiers.

Voici le code Python =>

import cv2

import numpy as np
import random
from moviepy.editor import VideoFileClip

def get_exposure_preset_parameters(preset):
    exposure_presets = {
        "Subtil": (0.9, 1.1),
        "Léger": (0.8, 1.2),
        "Modérée": (0.7, 1.3),
        "Fort": (0.5, 1.5),
    }
    return exposure_presets.get(preset, (0.8, 1.2))

def get_brightness_preset_parameters(preset):
    brightness_presets = {
        "Subtil": (-5, 5),
        "Léger": (-10, 10),
        "Modérée": (-15, 15),
        "Fort": (-30, 30),
    }
    return brightness_presets.get(preset, (-10, 10))

def get_contrast_preset_parameters(preset):
    contrast_presets = {
        "Subtil": (0.9, 1.1),
        "Léger": (0.8, 1.2),
        "Modérée": (0.7, 1.3),
        "Fort": (0.5, 1.5),
    }
    return contrast_presets.get(preset, (0.8, 1.2))

def get_saturation_preset_parameters(preset):
    saturation_presets = {
        "Subtil": (0.8, 1.2),
        "Léger": (0.7, 1.3),
        "Modérée": (0.5, 1.5),
        "Fort": (0.4, 1.6),
    }
    return saturation_presets.get(preset, (0.7, 1.3))

def print_video_parameters(
    video_index, exposure_factor, brightness_factor,
    contrast_factor, saturation_factor, mirror_effect,
    noise_level, rotation_angle
):
    print(
        f"Vidéo {video_index + 1} générée avec succès, "
        "métadonnées supprimées, protection anti-shadow activé."
    )
    print(f"Paramètres utilisés :")
    print(f"Exposition : {exposure_factor}")
    print(f"Luminosité : {brightness_factor}")
    print(f"Contraste : {contrast_factor}")
    print(f"Saturation : {saturation_factor}")
    print(f"Effet miroir : {'Activé' if mirror_effect else 'Désactivé'}")
    print(f"Niveau de bruit : {noise_level}")
    print(f"Angle de rotation : {rotation_angle}\n")

def add_noise(frame, level):
    h, w, c = frame.shape
    noise = np.random.normal(0, level, (h, w, c))
    noisy_frame = np.clip(frame + noise, 0, 255)
    return noisy_frame.astype(np.uint8)

def rotate_video(frame, angle):
    h, w, _ = frame.shape
    center = (w // 2, h // 2)
    rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0)
    rotated_frame = cv2.warpAffine(frame, rotation_matrix, (w, h))
    return rotated_frame

def adjust_video_parameters_with_presets(
    input_video_path, output_video_path, exposure_preset,
    brightness_preset, contrast_preset, saturation_preset,
    mirror_effect=False, noise_level=None, rotation_angle=0
):
    exposure_range = get_exposure_preset_parameters(exposure_preset)
    brightness_range = get_brightness_preset_parameters(brightness_preset)
    contrast_range = get_contrast_preset_parameters(contrast_preset)
    saturation_range = get_saturation_preset_parameters(saturation_preset)
    NUMBER_OF_VIDEOS = 5
    cap = cv2.VideoCapture(input_video_path)
    width = int(cap.get(3))
    height = int(cap.get(4))
    fps = cap.get(5)
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    print(f"Chemin de la vidéo d'entrée : {input_video_path}")
    print(f"Chemin de sortie : {output_video_path}")
    print(f"Largeur de la vidéo : {width}")
    print(f"Hauteur de la vidéo : {height}")
    print(f"FPS de la vidéo : {fps}")
    print(f"Effet miroir : {'Activé' if mirror_effect else 'Désactivé'}")
    print(f"Niveau de bruit : {noise_level}\n")

    for i in range(NUMBER_OF_VIDEOS):
        exposure_factor = random.uniform(*exposure_range)
        brightness_factor = random.uniform(*brightness_range)
        contrast_factor = random.uniform(*contrast_range)
        saturation_factor = random.uniform(*saturation_range)
        out = cv2.VideoWriter(
            f"{output_video_path}_{i}.mp4",
            fourcc, fps, (width, height)
        )

        while True:
            ret, frame = cap.read()
            if not ret:
                break
            frame = cv2.convertScaleAbs(
                frame,
                alpha=contrast_factor,
                beta=brightness_factor
            )
            hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
            hsv[:, :, 1] = hsv[:, :, 1] * saturation_factor
            frame = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)

            if mirror_effect:
                frame = cv2.flip(frame, 1)
            if noise_level is not None:
                frame = add_noise(frame, noise_level)

            frame = rotate_video(frame, rotation_angle)
            out.write(frame)
        out.release()
        print_video_parameters(
            i, exposure_factor, brightness_factor, contrast_factor,
            saturation_factor, mirror_effect, noise_level, rotation_angle
        )
        cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
    cap.release()
    cv2.destroyAllWindows()

def remove_metadata(input_video_path, output_video_path):
    video_clip = VideoFileClip(input_video_path)
    video_clip.write_videofile(
        output_video_path,
        codec="libx264",
        audio_codec="aac",
        remove_temp=True,
        logger=None
    )

# Exemple d'utilisation avec effets miroir,
# bruit et rotation choisis manuellement
input_video_path = 'c:/Users/Eleve/Desktop/BOT_Tiktok/Tiktok_INPUT/Fichier_entree.mp4'
output_video_path = 'c:/Users/Eleve/Desktop/BOT_Tiktok/Tiktok_OUTPUT/Fichier_sortie.mp4'
exposure_preset = "Subtil"
brightness_preset = "Léger"
contrast_preset = "Modérée"
saturation_preset = "Léger"
rotation_angle = 0  # Angle de rotation en degrés

adjust_video_parameters_with_presets(
    input_video_path, output_video_path, exposure_preset,
    brightness_preset, contrast_preset, saturation_preset,
    mirror_effect=False, noise_level=None,
    rotation_angle=rotation_angle
)

Merci D'avance

Coloration syntaxique ajoutée par la modération.
Windows / Chrome 120.0.0.0

5 réponses

NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 

Au vu de la description et sans plus de précision, je suspecte qu
input_video_path et/ou output_video_path ne pointe pas sur un fichier/dossier qui existe.


0
lilian_d57
 

Oui c'est exactement ça le problème. J'ai pourtant bien mis le fichier au bonne endroit et mis le bon chemin vers le fichier. Mais ça bloque... Je sais vraiment plus quoi faire

0
lilian_d57
 

Je suis sur un PC Windows 11, je ne sais pas si ça a un lien avec la notation du chemin

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

tu n'as pas précisé le message d'erreur précis.

peux-tu tester ceci?

import os
def pf(path):
    r=os.path.exists(path)
    if r :
        print(path + " existe.")
    else:
        print (path + " n'existe pas.")
chem1='c:/Users/Eleve/Desktop/BOT_Tiktok/Tiktok_INPUT/Fichier_entree.mp4'
pf(chem1)
chem1='c:/Users/Eleve/Desktop/BOT_Tiktok/Tiktok_OUTPUT
pf(chem2)
0
lilian_d57
 

Le message d'erreur est le suivant :

[Running] /usr/bin/env python3 "c:\Users\Elève\Desktop\BOT_Tiktok\ReplicaAlpha1.py"

Le chemin d'acc�s sp�cifi� est introuvable.

[Done] exited with code=1 in 4.121 seconds

0
lilian_d57
 

Malheureusement ça ne marche pas. J'ai bien remplacer les 2 path par votre code.

0
jee pee Messages postés 41530 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > lilian_d57
 

Tu es sur une machine Linux ?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lilian_d57
 

"ça ne marche pas": qu'observes-tu?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lilian_d57
 

Le message d'erreur indique c:\Users\Elève, et, dans ton code, je vois c:/Users/Eleve.

Lequel est correct?

0
jee pee Messages postés 41530 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 

Bonjour,

Montre nous le message d'erreur.

Tu as un utilisateur Windows qui s'appelle Eleve sur ton pc ? Et c'est avec cet utilisateur que tu es connecté pour exécuter le programme ?

En mode ligne de commande, lance la commande suivante :

dir c:\Users\Eleve\Desktop\BOT_Tiktok\Tiktok_INPUT\

0
lilian_d57
 

Oui, j'ai bien un compte utilisateur Eleve sur mon PC. C'est mon PC offert par le lycée. Je ne sais pas si ça peut poser un problème.

Quand je tape ce que vous m'avez dit de mettre dans le terminal, ça me dit qu'il est impossible de trouver le chemin d'accès à /User/Eleve...

0
lilian_d57
 

Voici le code erreur qu'il m'affiche

0
jee pee Messages postés 41530 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > lilian_d57
 

Si on regarde l'image il y a un accent sur le compte Elève pas Eleve

1
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Remarque, d'après le prompt que l'on voit sur ton image

tu es déjà dans C:\users\Elève

tu peux toujours taper

cd Desktop\BOT_Tiktok\Tiktok_INPUT

et quand le prompt ressemblera à ça:

C:\users\Elève\Desktop\BOT_Tiktok\Tiktok_INPUT >

tu tapera

dir

0
lilian_d57
 

J'ai ecris cd Desktop\BOT_Tiktok\Tiktok_INPUT dans le terminal et ça m'affiche ce message d'erreur 

0
lilian_d57
 

Auft comme mon PC est sur une session Elève, je doit mettre l'accent sur le e ou c'est pas accepté par PYTHON?

0
jee pee Messages postés 41530 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > lilian_d57
 

moi j'aurais testé directement pour savoir ;-)

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > lilian_d57
 

Sur ton image du 31/12 à 17h48, on voyait le prompt suivant:

C:\users\Elève>

montrant que tu est dans le dossier Elève

Je te proposais donc le 1er janvier à 11h57, de te placer dans le dossier

Desktop\BOT_Tiktok\Tiktok_INPUT

en faisant

cd Desktop\BOT_Tiktok\Tiktok_INPUT

Or, dans ce message-ci, on voit sur ton image le prompt

C:\users\Elève\Desktop\BOT_Tiktok\Tiktok_INPUT>

montrant que tu es déjà dans Tiktok_INPUT !!!!

donc, évidemment, si tu fais, depuis ce dossier:

cd Desktop\BOT_Tiktok\Tiktok_INPUT

ca ne marche pas !

Il n'existe pas de dossier

C:\users\Elève\Desktop\BOT_Tiktok\Tiktok_INPUT\Desktop\BOT_Tiktok\Tiktok_INPUT

0
lilian_d57 > Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention  
 

Ils me disent que le chemin d'accès n'existe pas mais ça je le savais déjà. Pourtant j'ai copié le chemin de mon gestionnaire des fichiers dans le code.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Ce qui est sur, c'est que si le dossier s'appelle vraiment "Elève"

avec un accent grave sur le "e", il faut écrire:

input_video_path = 'C:\Users\Elève\Desktop\BOT_Tiktok\Tiktok_INPUT\Fichier_entree.mp4'

Idem avec output_video_path .... 

0
lilian_d57
 

D'accord ça s'est changé c bon.

Regarde quand je cherche l'emplacement de ma vidéo dans mes fichier : 

Et aussi j'ai testé de tapé ça dans le terminal : 

C:/Users/Elève/Desktop/BOT_Tiktok/Tiktok_INPUT/Fichier_entree.mp4

et ça m'a ouvert la vidéo.

Donc ça c'était pour le input video et maintenant quand je tape : 

C:/Users/Elève/Desktop/BOT_Tiktok/Tiktok_INPUT/Fichier_sortie.mp4

pour le output video bah ça me dit ça. (sachant que la vidéo "Fichier_entree.mp4 n'existe pas contrairement au input "Fichier_entree.mp4") :

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > lilian_d57
 

D'après ton image, tu n'as pas tapé

C:/Users/Elève/Desktop/BOT_Tiktok/Tiktok_INPUT/Fichier_sortie.mp4

mais juste

C:/Users/Elève/Desktop/BOT_Tiktok (en jaune sur l'image)

0