安装OpenCV4.6.0简洁过程--Jetson AGX Orin(方便以后安装)

  安装完一个软件什么的,如果今天不写个记录,过两天就全部忘了.这个过程中出现过多次编译错误,奇奇怪怪的什么都有,多半都是cmake的时候配置不全导致的.

非常感谢以下博主:

Linux下OpenCV的安装与测试成功教程

Jetson Xavier NX安装opencv3.4.5(小白教程)

安装opencv4.6.0过程

① 下载:Releases - OpenCV(选择 sources)
② 解压进入目录
③ mkdir build
④ cd build

⑤ 安装环境依赖:

sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

⑥ cmake(别急,还要加上出现问题后解决方案中的两条)

cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON ..
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..
cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF ..
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON  -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF  -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

遇到的问题:

/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFWriteEncodedStrip@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFOpen@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFSetField@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFWriteScanline@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFGetField@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFScanlineSize@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFWriteDirectory@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFSetWarningHandler@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFSetErrorHandler@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadEncodedTile@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadRGBATile@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFClose@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFRGBAImageOK@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFClientOpen@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:89:bin/opencv_annotation] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2630:apps/annotation/CMakeFiles/opencv_annotation.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
	
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFWriteEncodedStrip@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFWriteScanline@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFGetField@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFScanlineSize@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFWriteDirectory@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadEncodedTile@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadRGBATile@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFClose@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFClientOpen@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFRGBAImageOK@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFOpen@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFSetField@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFSetWarningHandler@LIBTIFF_4.0'
/usr/bin/ld: ../../lib/libopencv_imgcodecs.so.4.6.0: undefined reference to `TIFFSetErrorHandler@LIBTIFF_4.0'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/visualisation/CMakeFiles/opencv_visualisation.dir/build.make:89:bin/opencv_visualisation] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2661:apps/visualisation/CMakeFiles/opencv_visualisation.dir/all] 错误 2

 解决办法:

cmake -DCMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -DBUILD_EXAMPLES=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake -D BUILD_TIFF=ON .. # 这句很重要解决上面问题的关键

⑦ make -j8

扫描二维码关注公众号,回复: 14635286 查看本文章

⑧ sudo make install

查看版本:

opencv_version
# 4.6.0

pkg-config --modversion opencv4
# 4.6.0

 ⑨ 后续过程:

apt-get install pkg-config

vim /etc/ld.so.conf.d/opencv.conf   # (打开后加入/usr/local/lib,然后保存退出)
sudo ldconfig

sudo apt-get install vim-gtk
sudo vim /etc/bash.bashrc    # (加入PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig \  export PKG_CONFIG_PATH)
source /etc/bash.bashrc
	
find ./ -name opencv4.pc
# ./unix-install/opencv4.pc

pkg-config --cflags opencv4
# -I/usr/local/include/opencv4

⑩ 验证:

 方法一:

cd opencv/samples/cpp/
g++ edge.cpp `pkg-config --cflags --libs opencv4`
./a.out

方法二: 

cd ../opencv-4.6.0/samples/cpp/example_cmake
cmake .
make
./opencv_example

 完 结 !


若要卸载:

	卸载默认Orin上的版本:
	sudo apt purge libopencv*
	sudo apt autoremove
	sudo apt update
	
	卸载其他版本:
	cd .../opencv-4.6.0/build
	sudo make uninstall
	cd .../opencv-4.6.0
	sudo rm -r build
	

其他方法:
Jetson Xavier NX OpenCV 安装 - 知乎

OpenCV: Tags · opencv/opencv · GitHub
opencv_contrib: Tags · opencv/opencv_contrib · GitHu

猜你喜欢

转载自blog.csdn.net/beautifulback/article/details/125916523