Hi there,
I have been experimenting with the VI test pattern generators. However, I’m not able to get the same image out through v4l2-ctl and nvargus.
First I load the test patterns:
sudo insmod /lib/modules/5.10.104-tegra/kernel/drivers/media/platform/tegra/tpg/nvhost-vi-tpg-t19x.ko
V4L2 command:
v4l2-ctl --set-ctrl bypass_mode=0 --set-fmt-video=width=1920,height=1080,pixelformat="RG10" --device=/dev/video5 --stream-count=10 --stream-mmap --stream-to=tpg.raw
I then debayered this image with a small Python script:
import os
import cv2
import numpy as np
file_input = 'tpg.raw' if len(sys.argv) < 2 else sys.argv[1]
file_output = 'frame.png' if len(sys.argv) < 3 else sys.argv[2]
width = 1920
height = 1080
bpp = 10
def divide_frames(l, n):
for i in range(0, len(l), n):
yield l[i:i + n]
with open(file_input, "rb") as raw_image:
data = np.fromfile(raw_image, np.uint16, -1)
for idx, image_data in enumerate(divide_frames(data, width*height)):
print(image_data.shape)
img = image_data.reshape((height, width))
# Pixels are stored as 16 bits, only 10 or 12 MSB are used
# https://forums.developer.nvidia.com/t/how-to-decode-raw-images-saved-with-v4l-ctl/254459/8
# Finally multiply the image to use the full range
img = np.right_shift(img, 16 - bpp) * (2 ** 6)
colour = cv2.demosaicing(img, cv2.COLOR_BAYER_BG2BGR)
cv2.imwrite(file_output.replace(".png", f"-{idx}.png"), colour)
NvArgus command, disabled all processing as much as possible:
gst-launch-1.0 nvarguscamerasrc sensor-id=5 sensor-mode=2 num-buffers=1 ee-mode=0 tnr-mode=0 wbmode=0 aeantibanding=0 aelock=true aeregion="0 0 1000 1000 1" ! 'video/x-raw(memory:NVMM),width=(int)1920,height=(int)1080,format=NV12' ! nvvideoconvert ! pngenc ! filesink location=nvargus.png
I have removed all the files from /var/nvidia/nvcam/settings, but I still see many differences in the colors and sharpening still enabled.
I attached both images, you can see they look nothing alike.
I measured the RGB values in the raw.png that was taken with v4l2-ctl. Here the black, red, green, blue and white colors all have the appropriate RGB values if I measure them.
In the image generated from nvarguscamerasrc, the bottom left, which is supposed to light gray, turns fully white. The other colors mentioned before are also no longer correct.
How can I get the same picture through nvargus without it doing any color correction?

