OpenCV videocapture () не открывает видеофайл с жесткого диска - PullRequest
0 голосов
/ 08 января 2020

Несмотря на то, что у меня много тем по открытому резюме, но я не могу открыть видео, я все еще не могу решить его.

Я пытаюсь открыть и извлечь кадры, используя openCV с spyder (os: windows 10, python 3.7.4). Насколько я знаю (при условии, что путь к файлу указан правильно) cv2.read возвращает 0, если либо код c не поддерживается (для уверенности конвертировал видео в H264, а также загрузил тестовый avi, используемый для проверки этой самой проблемы). в более старом посте) или если есть проблема с зависимостью ffmpeg.

Так как я думал, что это было источником проблемы, я добавил conda и phyton в PATH с помощью команды SETX и после этого закончил копированием папок ffmpeg dll и cv2 везде, так как я не мог хорошо понять, были Я должен был вставить его. В результате я все еще не могу заставить его работать и даже не могу попробовать сделать экстрактор фреймов напрямую с помощью ffmpeg, поскольку даже он выдает ошибку с копируемой функцией с его сайта.

Здесь это код:

import os 
import ffmpeg


def read_frame_as_jpeg(in_filename, frame_num):
    out, err = (
        ffmpeg
        .input(in_filename)
        .filter('select', 'gte(n,{})'.format(frame_num))
        .output('pipe:', vframes=1, format='image2', vcodec='mjpeg')
        .run(capture_stdout=True)
    )

# Read the video from specified path 
#cam = cv2.VideoCapture(r'C:\MY\folder\264H.mp4') 
cam = cv2.VideoCapture(r'C:\Users\name\Downloads\drop.avi') 
fps=60
vid_start=371
vid_end=377
sens=20
out_dir=r"C:\MY\folder"
out_dir=out_dir+'\\'
print(out_dir)

stri="drop.avi"#even tried putting the fiel in the same directory, no change
read_frame_as_jpeg(stri, 1)

# frame 
currentframe = 0

while(True): 

    # reading from frame 
    ret,frame = cam.read()

    print(currentframe)
    if ret and currentframe>= (fps*vid_start)-sens and currentframe<= (fps*vid_end)+sens: 
        # if video is still left continue creating images 
        name = out_dir+ str(currentframe) + '.bmp'
        print ('Creating...' + name) 

        # writing the extracted images 
        cv2.imwrite(name, frame) 

        # increasing counter so that it will 
        # show how many frames are created 
        currentframe += 1
    else: 
        break

# Release all space and windows once done 
cam.release() 
cv2.destroyAllWindows()  

Я получаю ошибку ffpeg

[WinError 2] Impossible to find the specified file

, в то время как видеозахват возвращает 0, он даже не введите l oop, чтобы я получил только «0» печать

...