Определенная камера PiCamera camera.shutter не совпадает с запрошенной камерой.exposure_speed

В Raspberry Pi определенный camera.shutter не совпадает с запрошенным camera.exposure_speed.

В документе API Picamera-Документ API PiCamera говорится:

Exposure_speed- Получает текущую выдержку камеры. При запросе это свойство возвращает текущую используемую выдержку. камерой. Если вы установили shutter_speed на ненулевое значение, тогда Exposition_speed и shutter_speed должны быть равны. Однако если shutter_speed установлен на 0 (авто), тогда вы можете прочитать фактический затвор скорость, используемая из этого атрибута. Значение возвращается как целое число. представляющий количество микросекунд. Это свойство только для чтения.

Несмотря на описанное выше, после того, как я определил shutter_sepeed равным 10 секундам, extension_speed вернет 0 - два переменных не равны. как видно в моем коде ниже:

from picamera import PiCamera
with PiCamera(resolution=(1024,768), framerate=Fraction(1,6), sensor_mode=3) as camera:
    exp_sec = int('10')
    camera.shutter_speed = exp_sec * 10**6 # micros
    sleep(30)
    print('camera_shutter_speed='+str(camera.shutter_speed))
    print('camera_exposure_speed:'+str(camera.exposure_speed))                
    camera.iso = 1600              # 100-1600
    camera.exposure_mode = 'off'   # lock all setting parameters
    fn_png = str(time.strftime("%Y-%m-%d-%H-%M-%S"))+'.png
    camera.capture(fn_png, format='png')

В ответ:

>>> 
===== RESTART: /home/pi/Documents/test_scripts/cap_one_image.py =====
made new direc
it is time to take a shot
0
camera_shutter_speed=9999959
camera_exposure_speed= 0

Последние два не равны, что не имеет никакого смысла. Мысли?

Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
606
1

Ответы 1

IIRC, атрибут camera.exposure_speed не обновляется до тех пор, пока после вы не сделали изображение с запрошенной настройкой shutter_speed.

Если вы попробуете распечатать настройки после захвата, это сработает?

exp_sec=int('10')
camera.shutter_speed=exp_sec*10**6 # micros
sleep(30)
print('camera_shutter_speed='+str(camera.shutter_speed))
print('camera_exposure_speed:'+str(camera.exposure_speed))                
camera.iso=1600 #100-1600
camera.exposure_mode='off' # lock all setting parameters
fn_png=str(time.strftime("%Y-%m-%d-%H-%M-%S"))+'.png'
camera.capture(fn_png, format='png')
print('camera_shutter_speed='+str(camera.shutter_speed))
print('camera_exposure_speed:'+str(camera.exposure_speed))

почему exp_sec=int(‘10’) используется вместо exp_sec = 10?

joaquin 12.02.2021 06:48

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