2015-12-07 4 views
4

Я начинаю с питона. Я хочу прочитать фрейм из avi-файлов, и я пишу следующий код. Когда я запускаю этот код, я получаю сообщение типа «Ошибка сегментации» (core dumped). Может ли кто-нибудь сказать мне причину. Я уверен, что использовал правый корень avi-файла. Я пытаюсь найти проблему с помощью ipython. Я обнаружил, что произошла ошибка при достижении линии ret, frame = cap.read().Ошибка сегментации (ядро сбрасывается) python

import numpy as np 
import cv2 

cap = cv2.VideoCapture('/home/sunjia/code/night_goto.avi') 

while(cap.isOpened()): 
    ret, frame = cap.read() 

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

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

cap.release() 
cv2.destroyAllWindows() 
+3

Было бы полезно, если бы вы отправили сообщение об ошибке, которое вы получили также –

ответ

1

Изменение Хотя состояние

while(ret): 

Попробуйте это !!

**** **** Коррекция до того, пока петля добавить это заявление: RET, кадр = cap.read() .read() вернет два параметра: рамки и логическое значение: 'True', если это любой кадр в файле чтения или «False», если нет рамки. Таким образом, 'ret' будет инициализирован и может использоваться для 'while()'. Теперь цикл while() будет выполняться до тех пор, пока оператор «ret, frame = cap.read()» в цикле не вернет параметры.

+0

Привет и благодарю вас за ваши усилия! Не могли бы вы объяснить, почему вы думаете, что это решит проблему? (Также обратите внимание, что 'while' должно быть строчным в Python и что' ret' должен быть инициализирован.) – kazemakase

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