2017-02-13 5 views
5

cv2.Videocapture() отлично работает при использовании веб-камеры, но при попытке чтения с жесткого диска отображается ошибка cap.isOpened() возвращает falsepython cv2.Videocapture() не работает, cap.isOpened() возвращает false

import cv2 
import numpy as np 
background=cv2.imread('background.png') 
cap = cv2.VideoCapture('car video.mp4') 
cap.open('car video.mp4') 
print cap.isOpened() 
while 1: 
    ret,img=cap.read() 
    cv2.imshow('a',img) 
    print img.shape 


    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

cap.release() 
cv2.destroyAllWindows() 

Он показывает эту ошибку

cv2.imshow('a',img) 
    error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:266: error:  (-215)  size.width>0 && size.height>0 in function cv::imshow 

мой OpenCV версии 3.0.0, Python 2.7, Windows 10 32 бит

+0

Во-первых, удалить cap.open() вызов; это избыточно. Во-вторых, проверьте, находится ли ваше видео в том же каталоге, что и ваш код. В-третьих, удалите пробел в имени файла. Попробуйте car_video.mp4 –

+0

Я меняю имя файла и удаляю cap.open(). но сообщение об ошибке остается таким же –

+0

enclose filename в двойных кавычках –

ответ

1

Я не уверен, что вы пишете имя файла правильно. Я никогда не видел каталог файлов, например 'car video.mp4'. Когда вы используете индекс на основе нуля, веб-камера и cv2.VideoCapture работают нормально; однако VideoCapture не может читать файл, такой как «автомобиль (космос) video.mp4 ' Рабочий код - это что-то вроде этого;

import numpy as np 
import cv2 

cap = cv2.VideoCapture('video.mp4') 

while(cap.isOpened()): 

    ret, frame = cap.read() 

    if ret==True: 

     cv2.imshow('frame',frame) 

     if cv2.waitKey(1) & 0xFF == ord('q'): 
      break 
    else: 
     break 

# Release everything if job is finished 
cap.release() 
cv2.destroyAllWindows() 
3

вам нужно FFmpeg кодек может запустить видео

+0

Да, это работает благодаря. Сначала я не копировал файл ffmpeg codec –

+2

, не могли бы вы рассказать мне, как добавить файл ffmpeg-кодека? –

+1

Скопируйте весь файл из ** OpenCV \ 3rdparty \ ffmpeg \ ** в ** C: \ Python27 \ ** или в каталог, который находится в PATH. Возможно, потребуется переименование файла opencv_ffmpeg.dll. Для OpenCV версии XYZ opencv_ffmpeg.dll ==> opencv_ffmpegXYZ.dll Для 64-битной версии OpenCV XYZ opencv_ffmpeg.dll ==> opencv_ffmpegXYZ_64.dll –

Смежные вопросы