samuelpowell / Spinnaker.jl

A Julia interface to the FLIR/PointGrey Spinnaker SDK
MIT License
15 stars 7 forks source link

Add auto-gain limits and auto-exposure priority control #76

Closed Octogonapus closed 3 years ago

Octogonapus commented 3 years ago

This PR exposes the auto-gain limits in the Spinnaker SDK. The nodes are called AutoExposureGain... for some reason, but the auto-gain can be enabled separately from auto-exposure, so I have just called the functions autogain instead of autoexposure_gain or similar.

I tested this with a real camera. Changing the auto-gain limits in code produces the same behavior as when changing them in SpinView.

samuelpowell commented 3 years ago

Thanks @Octogonapus. @IanButterworth are you able to review as I’m without hardware atm?

IanButterworth commented 3 years ago

Thanks @Octogonapus. Yeah, some of the nodes are rather confusingly named, and some change between cameras, meaning we have to juggle multiple node names. I wouldn't be surprised if that node name is different/more correct for another camera.

@samuelpowell Yeah, I confirm this works.

I talked with @Octogonapus and we also want to sneak in the exposure priority setting here, which can be set via https://github.com/samuelpowell/Spinnaker.jl/blob/e1a2aae3ebc68c18790c86bdd1717701cf953053/src/wrapper/spin_common.jl#L2695

image

IanButterworth commented 3 years ago

Confirmed to work as expected

julia> Spinnaker.autoexposure_control_priority!(cam, "ExposureTime")
"ExposureTime"

julia> @show Spinnaker.exposure(cam) Spinnaker.gain(cam)
Spinnaker.exposure(cam) = (5005.0, "Continuous")
Spinnaker.gain(cam) = (24.99702814220123, "Continuous")
(24.99702814220123, "Continuous")

julia> Spinnaker.autoexposure_control_priority!(cam, "Gain")
"Gain"

julia> @show Spinnaker.exposure(cam) Spinnaker.gain(cam)
Spinnaker.exposure(cam) = (17853.0, "Continuous")
Spinnaker.gain(cam) = (13.898384393889526, "Continuous")
(13.898384393889526, "Continuous")