Open starlight-traveler opened 9 months ago
Noted. I will address the issue soon. Update 2-11-2023: I can't install the pre-released JetPack 6 on my Jetson Orin Nano. It loops during bootup. Let's wait a few weeks for the official version 6 release.
Ahh, you would need to follow this thread, if you installed via SD Image or regular Nvidia SDK then the QSPI won't recognize it. Been an error for months:
No problem though!
Hey there @starlight-traveler and @Qengineering, I have the AGX Orin running Jetpack 6-dp and was able to update the 4.9 script to work. Jetpack 6 uses Cuda 12.2 and I believe that is why 4.8 wouldn't work for me when I tried. Below is the updated script for 4.9. I hope this is helpful!
set -e install_opencv () {
if [ -e "/proc/device-tree/model" ]; then
model=$(tr -d '\0' < /proc/device-tree/model)
# Check if the model information contains "Orin"
echo ""
if [[ $model == *"Orin"* ]]; then
echo "Detecting an NVIDIA Orin Device."
# Use always "-j 4"
NO_JOB=4
ARCH=8.7
PTX="sm_87"
elif [[ $model == *"Jetson Nano"* ]]; then
echo "Detecting a regular Jetson Nano."
ARCH=5.3
PTX="sm_53"
# Use "-j 4" only swap space is larger than 5.5GB
FREE_MEM="$(free -m | awk '/^Swap/ {print $2}')"
if [[ "FREE_MEM" -gt "5500" ]]; then
NO_JOB=4
else
echo "Due to limited swap, make only uses 1 core"
NO_JOB=1
fi
else
echo "Unable to determine the Jetson model."
exit 1
fi
echo ""
else echo "Error: /proc/device-tree/model not found. Are you sure this is a Jetson Product?" exit 1 fi
echo "Installing OpenCV 4.9.0 on your AGX Orin" echo "It will take 3.5 hours !"
cd ~ sudo sh -c "echo '/usr/local/cuda/lib64' >> /etc/ld.so.conf.d/nvidia-tegra.conf" sudo ldconfig
if [[ $model == "Jetson Nano" ]]; then sudo apt-get install -y build-essential git unzip pkg-config zlib1g-dev sudo apt-get install -y python3-dev python3-numpy sudo apt-get install -y python-dev python-numpy sudo apt-get install -y gstreamer1.0-tools libgstreamer-plugins-base1.0-dev sudo apt-get install -y libgstreamer-plugins-good1.0-dev sudo apt-get install -y libtbb2 libgtk-3-dev v4l2ucp libxine2-dev fi
sudo apt-get install -y cmake sudo apt-get install -y libjpeg-dev libjpeg8-dev libjpeg-turbo8-dev sudo apt-get install -y libpng-dev libtiff-dev libglew-dev sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install -y libgtk2.0-dev libgtk-3-dev libcanberra-gtk* sudo apt-get install -y python3-pip sudo apt-get install -y libxvidcore-dev libx264-dev sudo apt-get install -y libtbb-dev libdc1394-dev libxine2-dev sudo apt-get install -y libv4l-dev v4l-utils qv4l2 sudo apt-get install -y libtesseract-dev libpostproc-dev sudo apt-get install -y libswresample-dev libvorbis-dev sudo apt-get install -y libfaac-dev libmp3lame-dev libtheora-dev sudo apt-get install -y libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get install -y libopenblas-dev libatlas-base-dev libblas-dev sudo apt-get install -y liblapack-dev liblapacke-dev libeigen3-dev gfortran sudo apt-get install -y libhdf5-dev libprotobuf-dev protobuf-compiler sudo apt-get install -y libgoogle-glog-dev libgflags-dev
cd ~ sudo rm -rf opencv*
git clone --depth=1 https://github.com/opencv/opencv.git git clone --depth=1 https://github.com/opencv/opencv_contrib.git
cd ~/opencv mkdir build cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \ -D WITH_OPENCL=OFF \ -D CUDA_ARCH_BIN=${ARCH} \ -D CUDA_ARCH_PTX=${PTX} \ -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D WITH_CUBLAS=ON \ -D ENABLE_FAST_MATH=ON \ -D CUDA_FAST_MATH=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_NEON=ON \ -D WITH_QT=OFF \ -D WITH_OPENMP=ON \ -D BUILD_TIFF=ON \ -D WITH_FFMPEG=ON \ -D WITH_GSTREAMER=ON \ -D WITH_TBB=ON \ -D BUILD_TBB=ON \ -D BUILD_TESTS=OFF \ -D WITH_EIGEN=ON \ -D WITH_V4L=ON \ -D WITH_LIBV4L=ON \ -D WITH_PROTOBUF=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D BUILD_EXAMPLES=OFF \ -D CMAKE_CXX_FLAGS="-march=native -mtune=native" \ -D CMAKE_C_FLAGS="-march=native -mtune=native" ..
make -j ${NO_JOB}
directory="/usr/include/opencv4/opencv2" if [ -d "$directory" ]; then
sudo rm -rf "$directory"
fi
sudo make install sudo ldconfig
make clean sudo apt-get update
echo "Congratulations!" echo "You've successfully installed OpenCV 4.9.0 on your NVIDIA Embedded Device" }
cd ~
if [ -d ~/opencv/build ]; then echo " " echo "You have a directory ~/opencv/build on your disk." echo "Continuing the installation will replace this folder." echo " "
printf "Do you wish to continue (Y/n)?" read answer
if [ "$answer" != "${answer#[Nn]}" ] ;then echo "Leaving without installing OpenCV" else install_opencv fi else install_opencv fi
@robbiesrobotics1 ,
Thanks for your contribution.
One question. Where is the difference? Both scripts look identical to me.
@Qengineering no problem at all! I just made a couple changes to the packages installed because there were two in the old script that aren't available for 22.04.
libdc1394-22-dev wasn't available so I used libdc1394-dev
libavresample-dev wasn't available so replaced with libswresample-dev
At first the script wouldn't run on my AGX because it wasn't a Nano so in the if statement when checking for device I just changed the device or "Orin" so that any orin series device would be detected. Post install I was able to verify opencv 4.9.0-dev with cuda in jtop. Additionally, after exposing the path to python3.10 I'm also able to see opencv with cuda in python.
@robbiesrobotics1 I've updated the script with your suggestions. Thanks!
@Qengineering no problem at all! I'm glad it was helpful.
Question. Are you using JetPack 6? And have you installed OpenCV with the script? It seems quite an ordeal to get it running. See issue #24. And https://forums.developer.nvidia.com/t/build-python-opencv2-with-cuda-support-for-jetpack-6-0/289016/3
Hello,
With the advent of Jetpack 6.0 and with it Ubuntu LTS 22.04, I was inquiring whether or not the scripts would be updated to support the newest edition.
Some of the packages have been superseded or are not available, though I think running the commands manually still works.