Критическая ошибка gstreamer при попытке захвата видео с помощью веб-камеры python opencv

Я пытаюсь снять видео с веб-камеры, используя opencv и python с простым кодом

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
print('cap.isOpened')
if cap.isOpened():
    print ('cap is opened')
    while(True):
        re,img=cap.read()
        cv2.imshow("video output", img)
        k = cv2.waitKey(10)&0xFF
        if k==27:
            break
cap.release()
cv2.destroyAllWindows()

он работает нормально, если я пытаюсь воспроизвести существующее видео, например файл .mp4. но когда я пытаюсь использовать веб-камеру, у меня возникает ошибка

GStreamer-CRITICAL **: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не удалось установить ограничение.

для получения дополнительной информации я использую odroid xu4 с ubuntu 16.04, веб-камеру я использую logitech c170 (он работает правильно в веб-камерах и с использованием guvcview), думал, что это не работает с сыром и каморамой.

нужна помощь по этому поводу, пожалуйста ..


person Shinogami Rei    schedule 12.07.2018    source источник
comment
В терминале введите: python -c "import cv2; print(cv2.getBuildInformation())" | grep -iP "(v4l|ffmpeg)". Что на выходе?   -  person zindarod    schedule 12.07.2018
comment
@zindarod, это ошибка, которую я получаю, когда набираю то, что вы говорите, на моем терминале Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> BrokenPipeError: [Errno 32] Broken pipe   -  person Shinogami Rei    schedule 13.07.2018
comment
также я пытаюсь увидеть cv2.getBuildInformation () в ключевом слове ffmpeg, и это значение: `Video I / O: DC1394: YES (ver 2.2.4) FFMPEG: YES avcodec: YES (ver 57.89.100) avformat: ДА (версия 57.71.100) avutil: ДА (версия 55.58.100) swscale: ДА (версия 4.6.100) средняя выборка: ДА (версия 3.5.0) `   -  person Shinogami Rei    schedule 13.07.2018
comment
Решает ли это установка gst-libav? См. это сообщение вопросов и ответов по OpenCV. Кроме того, какая версия OpenCV?   -  person Ulrich Stern    schedule 24.11.2018


Ответы (1)


Следующий обходной путь имеет разумные шансы на работу:

cap = cv2.VideoCapture(0, cv2.CAP_V4L)

Возможность выбора серверных ВМ была добавлена ​​в OpenCV 3, см. VideoCapture()

person Ulrich Stern    schedule 29.11.2018