Installing OpenCV4 on Xavier (Solved)

OpenCV4 comes out in October, but you can compile and install the prerelease now. OpenCV4 will have further optimizations, C+11 support, and improvements to the DNN module. In order to compile and install you will need around 14GB of free space. Therefore having a NVMe M.2 SSD installed is imperative. Yesterday I purchased a Samsung 970 EVO 250GB for $87.99

[url]https://www.amazon.com/gp/product/B07BN5FJZQ/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1[/url]

  1. I highly recommend using python virtual environments. Then you donā€™t have to worry about messing up your local python install and dependencies. I like virtualenv. Create one based on the latest Python3.

  2. Install OpenCV4 dependencies:
    sudo apt-get install build-essential cmake unzip pkg-config
    sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
    sudo apt-get install libxvidcore-dev libx264-dev
    sudo apt-get install libgtk-3-dev
    sudo apt-get install libatlas-base-dev gfortran
    sudo apt-get install python3-dev

  3. Download the OpenCV4 repositories from GitHub
    git clone GitHub - opencv/opencv: Open Source Computer Vision Library
    git clone GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules

  4. Configure your python virtual environment and make it active. I am using Python v3.6.5.

  5. Install numpy
    pip install numpy

  6. Within the opencv folder create a build folder. Work out of that folder when issuing the cmake command

  7. Issue the cmake command.
    cmake -D CMAKE_BUILD_TYPE=RELEASE
    -D CMAKE_INSTALL_PREFIX=/usr/local
    -D INSTALL_PYTHON_EXAMPLES=ON
    -D INSTALL_C_EXAMPLES=OFF
    -D OPENCV_EXTRA_MODULES_PATH= ā€˜path to your opencv_contrib/modules folderā€™
    -D PYTHON_EXECUTABLE=~/.virtualenvs/xxxx/bin/python \ xxxx = virtual environment folder name
    -D BUILD_EXAMPLES=ON ā€¦

  8. You should see "Build files have been written to: ā€˜location of your build folderā€™

  9. The important thing to verify:
    Python 3 Interpreter: points to you virtual environment python instal
    Example: /home/nvidia/.virtualenvs/xxxx/bin/python3 (ver 3.6.5)
    Python 3 numpy: points to your virtual environment numpy install
    Example: /home/nvidia/.virtualenvs/xxxx/lib/python3.6/site-packages/numpy/core/include (ver 1.14.5)
    xxxx = name of your virtual environment

  10. Compile OpenCV4
    make -j4
    (4) is the number of CPU cores you want to devote to this task. I suppose you could use 8, but then maybe your Jetson will
    freeze.
    The compile will take awhile (1 to 2 hours). Walk away from your Jetson and hope.

  11. Hopefully you come back and see:
    [100%] Built target opencv_python3

  12. From the same Build directory issue the follow two commands
    sudo make install
    sudo ldconfig

  13. Create a symbolic link from the OpenCV install directory to your virtual environment
    cd ~/.virtualenvs/xxxx/lib/python3.6/site-packages/ xxxx = virtual environment folder name
    ln -s /usr/local/lib/python3.6/site-packages/cv2.cpython-36m-aarch64-linux-gnu.so cv2.so

  14. Validating install
    python
    import cv2
    cv2.version
    Your output should be: ā€˜4.0.0-preā€™

  15. Congratulations, all is well in your Jetson world.

2 Likes

Hi

About installing the Samsung 970 EVO, could you share some instructions, do we need to disassemble the unit, and I am new to linux, we need to setup to mount the new drive.
Thamks

Iā€™ve attached an image of what the SSD looks like installed. You can remove the 4 screws from the two standoffs to gain access. Be very careful when pulling apart the Jetson from the carrier board. There is a fan cable connecting the two. With a little effort they do pull apart.

For mounting the drive I followed these instructions by JetsonHacks. This was done on a different type of SSD but the mounting procedure is still applicable.

[url]https://www.jetsonhacks.com/2017/03/31/install-samsung-ssd-nvidia-jetson-tx2/[/url]

@AerialRoboticsGuru,
Same drive as i have used on my TX2, backed up all my work files to it and crossing fingers that it will just ā€œpopā€ up on the Xavier ;)

I ordered the drive
Thanks

Dear All,

Thank you for the step by step guide to install OpenCV4 on the xavier. It worked like a charm.

I have a quick question on the flags used here during the cmake command.
I have seen on the jetsonhacks github repository (https://github.com/jetsonhacks/buildOpenCVXavier) that they explicitly call certain flags for OpenCV 3.4. (see script buildAndPackageOpenCV.sh on the github)

I am particularly intrigued by the: -D WITH_CUDA=ON -D ENABLE_FAST_MATH=ON -D CUDA_FAST_MATH=ON

Are they ON by default when we run the cmake command in the first post?
Or is there a way to check it?

Thanks a lot for your help.

Hi @JoesMaker,

You can check OpenCV build options with cmake command.

wget --no-check-certificate https://github.com/opencv/opencv/archive/3.4.1.zip
unzip 3.4.1.zip
mkdir -p opencv-3.4.1/build
cd opencv-3.4.1/build
cmake ..
cmake -LA | awk '{if(f)print} /-- Cache values/{f=1}'

Have anyone succeeded using opencv-java?
https://opencv-java-tutorials.readthedocs.io/en/latest/01-installing-opencv-for-java.html#install-opencv-3-x-under-linux

@naisy thanks a lot for your help. Useful command

I have followed these instructions exactly. to install opencv 4.5.1 on my Jetson Xavier NX. But when I try to import cv2 I get the error,

ImportError: /home/xxxx/.virtualenvs/cv/lib/python3.6/site-packages/cv2/python-3.6/cv2.cpython-36m-aarch64-linux-gnu.so: undefined symbol: _ZTIN2cv3dnn14dnn4_v202011175LayerE
I have no idea what this means. Can anyone help me? My Jetson is useless without opencv.