Проблема с Python Script, который конвертирует изображения в видео после создания EXE с помощью pyinstaller - PullRequest
1 голос
/ 21 октября 2019

Я хотел сделать скрипт, который будет конвертировать изображения, хранящиеся в папке, в видео. Вот код:

    import cv2
    import numpy as np
    import os
    import pyautogui
    import msvcrt


    imageFolder = input('Please enter images folder path: ').replace(chr(34),"")
    outputPath = imageFolder+'\Video.avi'



    try:
        images = [img for img in os.listdir(imageFolder) if img.endswith(".jpg")]
        while len(images)==0:
            imageFolder = input('There are no images in the directory ! Please enter images folder path: ').replace(chr(34),"")
            images = [img for img in os.listdir(imageFolder) if img.endswith(".jpg")]

        print('Creating recording...')
        fourcc = cv2.VideoWriter_fourcc(*'mp4v')
        frame = cv2.imread(os.path.join(imageFolder, images[0]))
        height, width, layers = frame.shape
        frameRate = 2

        video = cv2.VideoWriter(outputPath, fourcc, frameRate, (width,height))

        for image in images:
            print(f'{int((images.index(image)/len(images))*100)} %', end="\r")
            video.write(cv2.imread(os.path.join(imageFolder, image)))

        cv2.destroyAllWindows()
        video.release()

        decision = input('Recording has been created successfully ! Do you want to open it?  [Y/N]: ')
        if decision.lower() == 'y':
            print('Opening file...')
            os.startfile(outputPath)
    except:
        print(f'There was a problem with creating a recording. Check images path: {imageFolder}')

Код работает нормально, когда я запускаю его из командной строки, но после преобразования его в EXE с помощью pyinstalller (pyinstaller -F ConvertToRecording.py) я получаю сообщение об ошибке типаэто:

    [ERROR:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap.cpp (3
    92) cv::VideoWriter::open VIDEOIO(CV_IMAGES): raised OpenCV exception:          

    OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\videoio\src\cap_images.cp
    p:253: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the n
    ame of file): C:\Users\MyUser\Documents\Test\20191018_12_45\Video.avi in function 
    'cv::icvExtractPattern'          

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 21 октября 2019

Используйте модуль os.path с путями вместо конкатенации строк. Это обеспечивает лучшую кроссплатформенную совместимость. См. руководство для более подробного объяснения модуля.

...