Python chemin d'accès introuvable
Phil_1857 Messages postés 1883 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
-
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.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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) -
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\
-
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
-
-
-
-
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
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 ....
-
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") :
-



