Встретился с такой же проблемой. И самое странное вот что.
Если запустить код из файла (python my_code.py), то камера не работает (получаем черную картинку (кстати, она не совсем черная, некоторые пиксели в массиве кадра не равны нулю, но это и у вас видно на кадре). Если же запустить тот же самый код интерактивно, то есть напрямую из интерпретатора, то камера работает корректно!
Открываем интерактивный режим: "py" (на винде - только на винде такая проблема и есть) и вставляем туда код, все работает!
Что я только не пытался сделать, ничего не помогает. В обоих случаях виртуальное окружение одинаковое. Почему это работает по-разному, не понятно.
Кстати, такое поведение замечено только на некоторых компах (предположительно, более старых)
Вот мой код для отладки этого бага
import cv2
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
while True:
_, frame = cap.read()
cv2.imshow('wnd2', frame)
k = cv2.waitKey(10)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
строки
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
использовать не обязательно, но они работают. То есть для этой картинки действительно можно подобрать разные разрешения (если на это способна камера)