Фотография веб-камеры, сделанная с помощью python-opencv, очень темная

Когда я делаю снимок веб-камеры с помощью python, используя opencv, изображение становится очень темным. Как я могу это исправить?

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

import cv2

cam = cv2.VideoCapture(0)
check, frame = cam.read()
cv2.imwrite('image.png', frame)
cam.release()

Включите свет.

Stop harming Monica 01.05.2018 20:24

Проблема не в этом.

christian 01.05.2018 20:25

Это может быть любое освещение, диафрагма объектива (если вы можете это контролировать) и / или скорость экспозиции. Темнота означает, что вы собрали недостаточно света, поэтому вы либо даете больше света, либо позволяете большей части света достигать датчика, либо собираете его дольше.

Dan Mašek 01.05.2018 20:29

После чтения кадра попробуйте гамма-коррекция.

Jeru Luke 01.05.2018 20:31

У меня нет этой проблемы при использовании других программ, так что это должно иметь какое-то отношение к моему коду.

christian 01.05.2018 20:31

Что ж, эти программы, вероятно, делают больше, чем просто открывают камеру с настройками по умолчанию и захватывают с нее изображение. Попробуйте изменить cv.CAP_PROP_EXPOSURE, или cv.CAP_PROP_GAIN, или другой характеристики, или попробуйте выполнить некоторую пост-обработку (но это запасной вариант, в идеале вы должны сначала управлять камерой, чтобы получить наилучший результат).

Dan Mašek 01.05.2018 20:38
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
370
1

Ответы 1

* Ответ на английском языке -.-

Я думаю, это потому, что у вашей веб-камеры слишком мало времени, чтобы сделать снимок, ей нужен свет. Я так делаю, и это работает:

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()

Другие вопросы по теме