Несмотря на то, что у меня много тем по открытому резюме, но я не могу открыть видео, я все еще не могу решить его.
Я пытаюсь открыть и извлечь кадры, используя 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» печать