I want to flip the image captured by my camera upside down. How should I do it? What device tree properties need to be modified?
I tried modifying the `readout_orientation` or `orientation` properties, but when running the Argus API to capture images, I still couldn’t achieve a 180-degree flip.
*** Please note that this reply is generated by LLM automatically ***
To flip the image captured by your camera upside down on the Jetson Orin NX, you will need to modify the device tree properties. Specifically, you will need to configure the rotation property in the device tree.
The rotation property is used to specify the rotation of the image captured by the camera. The possible values for this property are:
- 0: No rotation (default)
- 90: Rotate 90 degrees clockwise
- 180: Rotate 180 degrees (i.e., flip upside down)
- 270: Rotate 270 degrees counter-clockwise
To flip the image upside down, you will need to set the rotation property to 180.
Here is an example of how to modify the device tree properties to flip the image upside down:
&cam_module0 {
rotation = <180>;
};
This will flip the image captured by the camera upside down.
Note that the rotation property is specific to the camera module, so you will need to modify the device tree properties for the specific camera module you are using.
Additionally, you may also need to modify other device tree properties, such as flip-method or mirror, depending on the specific camera module and the desired output.
It’s also worth noting that the device tree structure has changed in Rel-36, so you may need to refer to the adaptation guide for the specific device tree structure and properties.
In comparison to other Jetson modules, such as the Jetson Xavier NX, the device tree properties and structure may be different. Therefore, it’s essential to refer to the specific documentation for the Jetson Orin NX and the camera module you are using.
In summary, to flip the image captured by your camera upside down on the Jetson Orin NX, you will need to modify the rotation property in the device tree to 180. You may also need to modify other device tree properties, depending on the specific camera module and the desired output.
*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***
Is there any camera that uses this example property?
Try flip-method of nvvidconv.
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! nvvidconv flip-method=2 ! xvimagesink sync=false
I implemented dual-camera streaming by referring to the API in the following directory. Is there a way to make the frame data from the cameras come out with a 180-degree flip?
/usr/src/jetson_multimedia_api/argus/samples
I modified the device tree as described above, but it didn’t work and didn’t make the image flip 180°
The nvvidconv works. It can flip the camera image 180 degrees.But I implemented dual-camera streaming by referring to the API in the following directory. Is there a way to make the frame data from the cameras come out with a 180-degree flip?
/usr/src/jetson_multimedia_api/argus/samples
I modified the device tree as described above, but it didn’t work and didn’t make the image flip 180°
The rotation don’t support for Jetson now.
Using MMAPI for your case.
I will use this API for conversion.
Additionally, I would like to ask why the device tree properties readout_orientation and orientation are not working either?
Specifies clockwise rotation in degrees of the sensor image presented on the display. Intended for use in an Android environment; has no effect with Jetson Linux.
This property is used to ensure that the sensor image display is oriented correctly for the end user.
For example, suppose the sensor is rotated 90° counterclockwise, so that the top of the image falls on the right side of the sensor’s imaging surface. The image on the display appears to be rotated 90° clockwise, with the top of the sensor’s imaging area at the top of the display, and the top of the image on the right. To correct this, set readout_orientation=270. This rotates the displayed image 270° clockwise (90° counterclockwise), rotating the top of the image from the right side of the display to the top.
The device I am using is the IMX415, which does not seem to support multi-plane capture/output (capability: 0x84200001).
Jetson Linux API Reference: V4L2 Video Converter | NVIDIA Docs
Are there any other methods?
Doesn’t matter with the sensor output. The pipeline is sensor → ISP → VIC(flip-method)
The device I use is Jetson NX.
cat /proc/device-tree/model && echo
NVIDIA Jetson Orin NX Engineering Reference Developer Kit
Operations such as cropping, flipping/rotating, and temporal noise reduction (TNR) require the video converter device node: /dev/nvhost-vic.
However, I cannot find this node on my device. Could you please tell me how to handle this?
pcai@pcai-desktop:~$ ls /dev/nvhost-vic
ls: cannot access '/dev/nvhost-vic': No such file or directory
root@pcai-desktop:/home/pcai# lsmod | grep nvhost
nvhost_vi5 20480 0
nvhost_isp5 16384 0
nvhost_nvcsi_t194 16384 0
tegra_camera 258048 4 nv_gmsl_imx415,nvhost_isp5,nvhost_nvcsi_t194,nvhost_vi5
nvhost_nvcsi 24576 1 tegra_camera
tegra_camera_platform 24576 4 nvhost_isp5,nvhost_nvcsi_t194,tegra_camera,nvhost_vi5
nvhost_nvdla 98304 0
nvhost_pva 151552 0
nvhost_capture 20480 2 nvhost_isp5,nvhost_vi5
nvhwpm 106496 4 mc_hwpm,tegra_drm,nvhost_nvdla,nvhost_pva
host1x_nvhost 40960 10 nvhost_isp5,nvhost_nvcsi_t194,nvidia,tegra_camera,nvhost_nvdla,nvhost_capture,nvhost_nvcsi,nvhost_pva,nvhost_vi5,nvidia_modeset
host1x 180224 8 host1x_nvhost,host1x_fence,nvgpu,tegra_drm,nvhost_nvdla,nvidia_drm,nvhost_pva,nvidia_modeset
root@pcai-desktop:/home/pcai# sudo modprobe nvhost-vic
modprobe: FATAL: Module nvhost-vic not found in directory /lib/modules/5.15.148-tegra
root@pcai-desktop:/home/pcai# sudo modprobe nvhost_vic
modprobe: FATAL: Module nvhost_vic not found in directory /lib/modules/5.15.148-tegra
root@pcai-desktop:/home/pcai# cd /lib/modules/5.15.148-tegra
root@pcai-desktop:/lib/modules/5.15.148-tegra# ls
build modules.alias modules.builtin modules.builtin.bin modules.dep modules.devname modules.softdep modules.symbols.bin
kernel modules.alias.bin modules.builtin.alias.bin modules.builtin.modinfo modules.dep.bin modules.order modules.symbols updates
root@pcai-desktop:/lib/modules/5.15.148-tegra# find /lib/modules/$(uname -r) -name "vic"
root@pcai-desktop:/lib/modules/5.15.148-tegra# dmesg | tail -20
[ 14.388392] zram1: detected capacity change from 0 to 1950864
[ 14.396964] Adding 975428k swap on /dev/zram1. Priority:5 extents:1 across:975428k SS
[ 14.401979] zram2: detected capacity change from 0 to 1950864
[ 14.415088] Adding 975428k swap on /dev/zram2. Priority:5 extents:1 across:975428k SS
[ 14.429367] zram3: detected capacity change from 0 to 1950864
[ 14.440007] Adding 975428k swap on /dev/zram3. Priority:5 extents:1 across:975428k SS
[ 16.620043] nvidia-modeset: Loading NVIDIA UNIX Open Kernel Mode Setting Driver for aarch64 540.4.0 Release Build (yangliyang@ubuntu) Sun 20 Jul 2025 08:03:52 PM PDT
[ 16.648389] [drm] [nvidia-drm] [GPU ID 0x00020000] Loading driver
[ 16.965397] NVRM rpcRmApiControl_dce: NVRM_RPC_DCE: Failed RM ctrl call cmd:0x731341 result 0xffff:
[ 17.230093] [drm] Initialized nvidia-drm 0.0.0 20160202 for 13800000.display on minor 1
[ 17.230216] checking generic (27de00000 1680000) vs hw (27de00000 1680000)
[ 17.230220] fb0: switching to nvidia-drm from simple
[ 17.230854] Console: switching to colour dummy device 80x25
[ 17.395116] Console: switching to colour frame buffer device 240x67
[ 17.395145] nv_platform 13800000.display: [drm] fb0: nvidia-drmdrmfb frame buffer device
[ 17.866984] r8168: enP8p1s0: link up
[ 17.867070] IPv6: ADDRCONF(NETDEV_CHANGE): enP8p1s0: link becomes ready
[ 22.046129] rfkill: input handler disabled
[ 24.502091] loop1: detected capacity change from 0 to 8
[ 42.170028] loop1: detected capacity change from 0 to 8
Does the nvhost-vic device node still need?
Hi,
The hardware VIC engine cannot be controlled through device node. Please use nvvidconv plugin in gstreamer, or NvBufSurface APIs in jetson_multimedia_api.
Where can I find information about the available NvBufSurface API?
Hi,
You can check the samples in
/usr/src/jetson_multimedia_api/samples/
/usr/src/jetson_multimedia_api/samples/07_video_convert/
已解决,万分感谢
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.


