Когда я делаю снимок веб-камеры с помощью python, используя opencv, изображение становится очень темным. Как я могу это исправить?
Я пытался заставить его подождать несколько секунд после включения камеры, чтобы увидеть, была ли это проблема, но это тоже не сработало.
import cv2
cam = cv2.VideoCapture(0)
check, frame = cam.read()
cv2.imwrite('image.png', frame)
cam.release()
Проблема не в этом.
Это может быть любое освещение, диафрагма объектива (если вы можете это контролировать) и / или скорость экспозиции. Темнота означает, что вы собрали недостаточно света, поэтому вы либо даете больше света, либо позволяете большей части света достигать датчика, либо собираете его дольше.
После чтения кадра попробуйте гамма-коррекция.
У меня нет этой проблемы при использовании других программ, так что это должно иметь какое-то отношение к моему коду.
Что ж, эти программы, вероятно, делают больше, чем просто открывают камеру с настройками по умолчанию и захватывают с нее изображение. Попробуйте изменить cv.CAP_PROP_EXPOSURE, или cv.CAP_PROP_GAIN, или другой характеристики, или попробуйте выполнить некоторую пост-обработку (но это запасной вариант, в идеале вы должны сначала управлять камерой, чтобы получить наилучший результат).






* Ответ на английском языке -.-
Я думаю, это потому, что у вашей веб-камеры слишком мало времени, чтобы сделать снимок, ей нужен свет. Я так делаю, и это работает:
import cv2
webcam = cv2.VideoCapture(0)
contador = 0
while True:
check, frame = webcam.read()
cv2.imshow("Captura", frame)
key = cv2.waitKey(1)
if contador==50: #Low contador means low light
cv2.imwrite(filename='image.png', img=frame)
break
contador=contador+1
print(contador)
webcam.release()
cv2.destroyAllWindows()
Включите свет.