J'ai une vidéo où la vue de face d'une voiture a été enregistrée. Le fichier est un .mp4 et je veux traiter les images individuelles afin que je puisse extraire plus d'informations (Objets, Lane Lines etc.). Le problème est, quand je veux créer une vidéo sur les fichiers traités, je reçois une erreur. Voici ce que je l'ai fait jusqu'à présent:Python: Créer une vidéo à partir d'images traitées
- a ouvert la vidéo avec cv2.VideoCapture() - fonctionne très bien
- les cadres Sauvés uniques de la vidéo avec cv2.imwrite() - Fonctionne bien
- Création une vidéo sur des images uniques avec cv2.VideoWriter() - fonctionne bien
- la vidéo avec Post-traitement cv2.cvtColor(), cv2.GaussianBlur() et cv2.Canny() - fonctionne bien
- Création d'une vidéo sur les images traitées - Ne fonctionne pas.
Voici le code i utilisé:
enter code here
def process_image(image):
gray = functions.grayscale(image)
blur_gray = functions.gaussian_blur(gray, 5)
canny_blur = functions.canny(blur_gray, 100, 200)
return canny_blur
process_on =0
count =0
video= cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"MJPG"), 10, (1600, 1200))
vidcap = cv2.VideoCapture('input.mp4')
success,image = vidcap.read()
success = True
while success:
processed = process_image(image)
video.write(processed)
Ceci est l'erreur que je reçois:
OpenCV Error: Assertion failed (img.cols == width && img.rows == height*3) in cv::mjpeg::MotionJpegWriter::write, file D:\Build\OpenCV\opencv-3.2.0\modules\videoio\src\cap_mjpeg_encoder.cpp, line 834 Traceback (most recent call last): File "W:/Roborace/03_Information/10_Data/01_Montreal/camera/right_front_camera/01_Processed/Roborace_CAMERA_create_video.py", line 30, in video.write(processed) cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\videoio\src\cap_mjpeg_encoder.cpp:834: error: (-215) img.cols == width && img.rows == height*3 in function cv::mjpeg::MotionJpegWriter::write
Ma suggestion est la suivante: Les images normales ont 3 dimensions en raison de la couleur RGB champ. Les images traitées ont seulement une dimension. Comment puis-je ajuster cela dans la fonction cv2.VideoWriter.
Merci pour votre aide
Il y a un certain nombre d'autres ambiguïtés dans son code, s'il vous plaît adressez-les dans votre réponse. Par exemple, la taille du cadre doit correspondre à la taille fournie au constructeur, la classe 'VideoWriter' ne redimensionne pas automatiquement le cadre pour correspondre au ctor. En outre, il écrit des cadres dans une boucle, mais en lisant les cadres en dehors de la boucle. – zindarod
@Zindarod sonne bien, je l'ai fait. Je n'ai pas inclus ces suggestions à l'origine car l'OP a énuméré un ensemble d'actions de travail, donc j'ai supposé que OP l'utilisait probablement correctement mais juste collé un mauvais exemple. Cependant, il est possible que je me trompe, et il vaut également la peine d'écrire si d'autres personnes tombent sur la question, alors je vous remercie pour cette suggestion. –