OpenCV зависает при попытке запустить VideoCapture (0) - PullRequest
0 голосов
/ 02 апреля 2019

Я играю с OpenCV.Я следую примеру документации ( ссылка )

Я установил приложение веб-камеры GTK в Ubuntu, чтобы проверить, работает ли моя веб-камера.Я могу запустить веб-камеру и посмотреть видеоотчет в GTK.

Я добавил несколько печатных сообщений в учебный код, чтобы узнать, где я нахожусь.Я добавил печать до и после этой строки: cap = cv2.VideoCapture(0)

Все, что я получаю при запуске файла Python, - это печать, которую я добавил до cap = cv2.VideoCapture(0) и ничего больше.

Я пытался увеличить waitKey до 20, 40, 100, но это не помогло.

Кто-нибудь знает, почему он не идет дальше и отображает кадр?

Мой код:

import numpy as np 
import cv2 

videoFeed = cv2.VideoCapture(0) 
while (True): 
    ret, frame = videoFeed.read() 
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    cv2.imshow('Feed', frame_gray) 
    if cv2.waitKey(10) & 0xFF = ord("q"): 
        break 
videoFeed.release() 
cv2.destroyAllWindows() 

Мои настройки:

  • Хост Windows 10
  • Хост Ubuntu 18.04
  • Встроенная веб-камера
  • Использование PIP дляустановить модуль python (numpy, scipi, pillow, open_cv и т. д.)
  • Использование venv python

1 Ответ

0 голосов
/ 02 апреля 2019

В вашем коде ошибка на if cv2.waitKey(10) & 0xFF = ord("q"):.Вы должны были получить синтаксическую ошибку здесь.

import numpy as np 
import cv2 

videoFeed = cv2.VideoCapture(0) 
while (True): 
    ret, frame = videoFeed.read()
    if ret == False:
        print("Failed to retrieve frame")
        break 
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    cv2.imshow('Feed', frame_gray) 
    if cv2.waitKey(10) & 0xFF == ord("q"): 
        break 
videoFeed.release() 
cv2.destroyAllWindows() 

Протестировал ваш код.Работает отлично.Единственное другое предложение - проверить, есть ли у вашего гостя Ubuntu разрешение на доступ к вашей веб-камере.Если вы используете VirtualBox, я помню, что видел вариант для этого в интерфейсе

...