Repository navigation
Long Exposures #745
Replies: 3 comments 4 replies
|
Hi and sorry for the delay. There might be a few different things happening. Firstly, when you set the exposure time it can take a while for it to take effect. If you can, maybe try setting things up before starting the camera ( |
|
Thanks for the answer. With buffer_count=2 I'm still seeing the odd thing where a 60sec exposure will be returned in less than 60 secs. I suspect it's because the camera is filling the next buffer whilst I'm still processing the previous one, therefore there's some overlap due to processing time. Is this likely the case? |
|
How are you measuring the exposure time? It's possible that the image is already being exposed when you start to wait for it. I would check the 'ExposureTime' field in the image metadata as this should always be accurate and correct, perhaps something like this: |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi,
I'm writing a driver for astrophotography and whilst testing it, I notice that the exposure lengths are wrong. I'm running repeated 60 sec exposures. From a cold start, the exposure times from triggering an async capture_array to the job returning (with a wait) is as follows (in seconds):- 1, 61, 119, 119, 119, 119, etc... Not one of them is the 60 seconds that I asked for. In fact, most take almost 2mins! Any thoughts why?
Some code snippets below to show how I'm doing this.
config = picam2.create_still_configuration( {"size": (640, 480)}, raw={'format': 'SRGGB12','size': (2028,1520)})
picam2.configure(config)
picam2.start()
...
with picam2.controls as controls:
controls.ExposureTime = int(duration * 1e6)
controls.AeEnable = False
controls.NoiseReductionMode = libcamera.controls.draft.NoiseReductionModeEnum.Off
controls.AwbEnable = False
controls.AnalogueGain = gainvalue
controls.ColourGains = (2.0, 2.0)
job = picam2.capture_array("raw", signal_function=oncapturefinished)
...
array = picam2.wait(job).view(np.uint16) * (2 ** (16 - 12))
EDIT:-
If I specify "queue=False, buffer_count=2" in the configuraton, I get different results. This time, for a 60 sec exposure, it would take 1 sec for the first exposure, then each subsequent one would take 58 seconds. Likewise, for a 2min exposure, the first takes 1 second and the rest take 1:59secs. What's happening here?
All reactions