Compile vision_opencv on Jetson Nano

Dr. Alok Pratap
Robotics — A New World!
1 min readNov 5, 2021
https://commons.wikimedia.org/wiki/File:Melodic_Morenia.png

So I was trying to compile ROS melodic “vision_opencv” on Jetson Nano.

Here is the solution, if anyone finds any error.

By default, vision_opencv is compiled for Opencv3. But Jetson Nano has Opencv4.

Step 1

$ cd vision_opencv/cv_bridge
$ nano CMakeLists.txt

Change this line of code

find_package(OpenCV 3 REQUIRED  COMPONENTS    opencv_core    opencv_imgproc    opencv_imgcodecs  CONFIG)

to

find_package(OpenCV 4 REQUIRED  COMPONENTS    opencv_core    opencv_imgproc    opencv_imgcodecs  CONFIG)

Step 2

$ cd vision_opencv/cv_bridge/src
$ nano CMakeLists.txt

Change Line 35

if (OpenCV_VERSION_MAJOR VERSION_EQUAL 3)

to

if (OpenCV_VERSION_MAJOR VERSION_EQUAL 4)

Step 3

$ cd vision_opencv/cv_bridge/src
$ nano module_opencv3.cpp

Change line 110

UMatData* allocate(int dims0, const int* sizes, int type, void* data, size_t* step, int flags, UMatUsageFlags usageFlags) const

to

UMatData* allocate(int dims0, const int* sizes, int type, void* data, size_t* step, AccessFlag flags, UMatUsageFlags usageFlags) const

Also, change line 139

bool allocate(UMatData* u, int accessFlags, UMatUsageFlags usageFlags) const

to

bool allocate(UMatData* u, AccessFlag accessFlags, UMatUsageFlags usageFlags) const

Reference for Step 1, Step 2, and Step 3

Step 4

Go to the terminal and execute this to create a symlink. Reference

$ sudo ln -s /usr/include/opencv4/opencv2/ /usr/include/opencv

That’s it!!!

Now it can be compiled without any error.

--

--