Python chemin d'accès introuvable

lilian_d57 - Modifié le 2 janv. 2024 à 16:23
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 3 janv. 2024 à 17:02

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 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
30 déc. 2023 à 23:58

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

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

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 22721 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
31 déc. 2023 à 15:50

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

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

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

0
jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235 > lilian_d57
31 déc. 2023 à 17:43

Tu es sur une machine Linux ?

0
yg_be Messages postés 22721 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > lilian_d57
31 déc. 2023 à 20:06

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

0
yg_be Messages postés 22721 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > lilian_d57
Modifié le 31 déc. 2023 à 20:09

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 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235
Modifié le 31 déc. 2023 à 16:38

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

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

Voici le code erreur qu'il m'affiche

0
jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235 > lilian_d57
31 déc. 2023 à 17:58

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

1
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
1 janv. 2024 à 11:57

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

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

0

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 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235 > lilian_d57
2 janv. 2024 à 22:08

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

0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178 > lilian_d57
Modifié le 3 janv. 2024 à 12:19

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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024
Modifié le 3 janv. 2024 à 13:45

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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 3 janv. 2024 à 16:15

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

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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178 > lilian_d57
3 janv. 2024 à 17:02

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