Ошибка при попытке вывести видео с камеры OpenCV
Пытаюсь отобразить видео с видеокамеры.
Код:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
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()
При запуске возникает ошибка:
OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
Остановка происходит на строке:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
при этом светодиодный индикатор на самой видеокамере загорается.
Путь указанный в ошибке:
D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182
не понимаю откуда берется. У меня вообще нет диска D: на компьютере.
read возвращает следующее: ret = False, frame = None
Помогите пожалуйста.
Ответы (2 шт):
Попробуйте так:
import cv2
#cap = cv2.VideoCapture(0)
cap = cv2.VideoCapture(cv2.CAP_DSHOW, 0) # <----
while(True):
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()
нужно явно указать тип api камеры, и, желательно, делать проверку на открытие:
import cv2
cap = cv2.VideoCapture()
cap.open(0, cv2.CAP_DSHOW)
if not cap.isOpened():
raise IOError("Cannot open webcam")
while(True):
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()

