Unable to control image settings of Raspberry Pi HQ IMX477 Camera using gstreamer on Nano

I’ve modified a Raspberry Pi HQ camera to work with my Nano using the RidgeRun instructions and drivers. I’ve also removed the IR filter, as I’ll be recording at night.

Everything appears to work fine, except that I can’t seem to adjust the settings to match the Raspberry Pi camera output.

On the Raspberry Pi (white balance setting ‘greyworld’), my test images of toys look like this:

rpi-frog rpi-tricycle

But (ignoring the resolution difference), on the Nano, they look much lower contrast:

Screenshot 2021-01-15 at 15.07.38

The lighting is exactly the same (infrared LEDs), as are the camera and lens. So, it’s definitely the settings that are the issue.

I’ve successfully modified the saturation using:

gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID saturation=0 ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink

But, changing white balance wbmode values in the same way has no apparent effect:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 wbmode=0 ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30" ! nvvidconv ! nvoverlaysink

I’ve also tried using videobalance to adjust brightness and contrast e.g.:

gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID saturation=0 ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! videobalance contrast=1.5 brightness=-0.3 ! nvvidconv ! nvoverlaysink

But just get an erroneous pipeline error:

WARNING: erroneous pipeline: could not link nvarguscamerasrc0 to videobalance0, videobalance0 can't handle caps video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=(fraction)60/1

Is it possible to control the camera’s output on the Nano, so I can match it to what I was getting from the Raspberry Pi? And if yes, how can I do it (please bear in mind I’m a relative novice)?

Try to add nvvidconv element before the videobalance.
And have a reference the multimedia API to check what argus can do.

Thanks! Moving the nvvidconv element solved the problem!