JETSON TX2解除安裝原有的opencv安裝opencv3.2

2020-09-21 17:00:32

參考部落格:
http://blog.csdn.net/u014613745/article/details/78310916
http://blog.csdn.net/public669/article/details/99044895

因為有需要要在tx2安裝opencv3.2,然而我這jetpack4.4裡的opencv版本是4.1.1,需要解除安裝重灌,但是在catkin_make中遇到了問題,這裡說一下如何解決。

一、解除安裝原有的opencv

sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update

檢視opencv版本

pkg-config opencv --modversion

若沒有顯示說明已經解除安裝成功

二、安裝opencv3.2

1.下載opencv

opencv下載官網:https://opencv.org/releases/
下載source檔案然後解壓,我這裡要在ros的工作的空間裡使用。所以放在了catkin_ws/src裡

2.安裝opencv

1.安裝依賴環境

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

2.編譯並安裝

cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 
make -j
sudo make install

時間比較漫長耐心等待

安裝opencv的時候可能會遇到報錯:

Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)
linked by target "opencv_cudev" in directory D:/Cproject/opencv/opencv/sources/modules/cudev
linked by target "opencv_cudev" in directory D:/Cproject/opencv/opencv/sources/modules/cudev
linked by target "opencv_test_cudev" in directory D:/Cproject/opencv/opencv/sources/modules/cudev/test
linked by target "opencv_core" in directory D:/Cproject/opencv/opencv/sources/modules/core
linked by target "opencv_core" in directory D:/Cproject/opencv/opencv/sources/modules/core
linked by target "opencv_test_core" in directory D:/Cproject/opencv/opencv/sources/modules/core
linked by target "opencv_perf_core" in directory D:/Cproject/opencv/opencv/sources/modules/core
linked by target "opencv_test_cudaarithm" in directory D:/Cproject/opencv/opencv/sources/modules/cudaarithm
linked by target "opencv_cudaarithm" in directory D:/Cproject/opencv/opencv/sources/modules/cudaarithm
linked by target "opencv_cudaarithm" in directory D:/Cproject/opencv/opencv/sources/modules/cudaarithm
linked by target "opencv_perf_cudaarithm" in directory D:/Cproject/opencv/opencv/sources/modules/cudaarithm
linked by target "opencv_flann" in directory D:/Cproject/opencv/opencv/sources/modules/flann
linked by target "opencv_flann" in directory D:/Cproject/opencv/opencv/sources/modules/flann
linked by target "opencv_test_flann" in directory D:/Cproject/opencv/opencv/sources/modules/flann
linked by target "opencv_imgproc" in directory D:/Cproject/opencv/opencv/sources/modules/imgproc
linked by target "opencv_imgproc" in directory D:/Cproject/opencv/opencv/sources/modules/imgproc
linked by target "opencv_test_imgproc" in directory D:/Cproject/opencv/opencv/sources/modules/imgproc
linked by target "opencv_perf_imgproc" in directory D:/Cproject/opencv/opencv/sources/modules/imgproc
linked by target "opencv_test_ml" in directory D:/Cproject/opencv/opencv/sources/modules/ml
linked by target "opencv_ml" in directory D:/Cproject/opencv/opencv/sources/modules/ml
linked by target "opencv_ml" in directory D:/Cproject/opencv/opencv/sources/modules/ml
linked by target "opencv_test_video" in directory D:/Cproject/opencv/opencv/sources/modules/video
linked by target "opencv_video" in directory D:/Cproject/opencv/opencv/sources/modules/video
linked by target "opencv_video" in directory D:/Cproject/opencv/opencv/sources/modules/video
linked by target "opencv_perf_video" in directory D:/Cproject/opencv/opencv/sources/modules/video
linked by target "opencv_cudabgsegm" in directory D:/Cproject/opencv/opencv/sources/modules/cudabgsegm
linked by target "opencv_cudabgsegm" in directory D:/Cproject/opencv/opencv/sources/modules/cudabgsegm
linked by target "opencv_test_cudabgsegm" in directory D:/Cproject/opencv/opencv/sources/modules/cudabgsegm
linked by target "opencv_perf_cudabgsegm" in directory D:/Cproject/opencv/opencv/sources/modules/cudabgsegm
linked by target "opencv_cudafilters" in directory D:/Cproject/opencv/opencv/sources/modules/cudafilters
linked by target "opencv_cudafilters" in directory D:/Cproject/opencv/opencv/sources/modules/cudafilters
linked by target "opencv_test_cudafilters" in directory D:/Cproject/opencv/opencv/sources/modules/cudafilters
linked by target "opencv_perf_cudafilters" in directory D:/Cproject/opencv/opencv/sources/modules/cudafilters
linked by target "opencv_cudaimgproc" in directory D:/Cproject/opencv/opencv/sources/modules/cudaimgproc
linked by target "opencv_cudaimgproc" in directory D:/Cproject/opencv/opencv/sources/modules/cudaimgproc
linked by target "opencv_test_cudaimgproc" in directory D:/Cproject/opencv/opencv/sources/modules/cudaimgproc
linked by target "opencv_perf_cudaimgproc" in directory D:/Cproject/opencv/opencv/sources/modules/cudaimgproc
linked by target "opencv_perf_cudawarping" in directory D:/Cproject/opencv/opencv/sources/modules/cudawarping
linked by target "opencv_cudawarping" in directory D:/Cproject/opencv/opencv/sources/modules/cudawarping
linked by target "opencv_cudawarping" in directory D:/Cproject/opencv/opencv/sources/modules/cudawarping
linked by target "opencv_test_cudawarping" in directory D:/Cproject/opencv/opencv/sources/modules/cudawarping
linked by target "opencv_imgcodecs" in directory D:/Cproject/opencv/opencv/sources/modules/imgcodecs
linked by target "opencv_imgcodecs" in directory D:/Cproject/opencv/opencv/sources/modules/imgcodecs
linked by target "opencv_test_imgcodecs" in directory D:/Cproject/opencv/opencv/sources/modules/imgcodecs
linked by target "opencv_perf_imgcodecs" in directory D:/Cproject/opencv/opencv/sources/modules/imgcodecs
linked by target "opencv_perf_photo" in directory D:/Cproject/opencv/opencv/sources/modules/photo
linked by target "opencv_photo" in directory D:/Cproject/opencv/opencv/sources/modules/photo
linked by target "opencv_photo" in directory D:/Cproject/opencv/opencv/sources/modules/photo
linked by target "opencv_test_photo" in directory D:/Cproject/opencv/opencv/sources/modules/photo
linked by target "opencv_test_shape" in directory D:/Cproject/opencv/opencv/sources/modules/shape
linked by target "opencv_shape" in directory D:/Cproject/opencv/opencv/sources/modules/shape
linked by target "opencv_shape" in directory D:/Cproject/opencv/opencv/sources/modules/shape
linked by target "opencv_test_videoio" in directory D:/Cproject/opencv/opencv/sources/modules/videoio
linked by target "opencv_videoio" in directory D:/Cproject/opencv/opencv/sources/modules/videoio
linked by target "opencv_videoio" in directory D:/Cproject/opencv/opencv/sources/modules/videoio
linked by target "opencv_perf_videoio" in directory D:/Cproject/opencv/opencv/sources/modules/videoio
linked by target "opencv_cudacodec" in directory D:/Cproject/opencv/opencv/sources/modules/cudacodec
linked by target "opencv_cudacodec" in directory D:/Cproject/opencv/opencv/sources/modules/cudacodec
linked by target "opencv_perf_cudacodec" in directory D:/Cproject/opencv/opencv/sources/modules/cudacodec
linked by target "opencv_test_cudacodec" in directory D:/Cproject/opencv/opencv/sources/modules/cudacodec
linked by target "opencv_highgui" in directory D:/Cproject/opencv/opencv/sources/modules/highgui
linked by target "opencv_highgui" in directory D:/Cproject/opencv/opencv/sources/modules/highgui
linked by target "opencv_test_highgui" in directory D:/Cproject/opencv/opencv/sources/modules/highgui
linked by target "opencv_perf_objdetect" in directory D:/Cproject/opencv/opencv/sources/modules/objdetect
linked by target "opencv_objdetect" in directory D:/Cproject/opencv/opencv/sources/modules/objdetect
linked by target "opencv_objdetect" in directory D:/Cproject/opencv/opencv/sources/modules/objdetect
linked by target "opencv_test_objdetect" in directory D:/Cproject/opencv/opencv/sources/modules/objdetect
linked by target "opencv_ts" in directory D:/Cproject/opencv/opencv/sources/modules/ts
linked by target "opencv_ts" in directory D:/Cproject/opencv/opencv/sources/modules/ts
linked by target "opencv_test_features2d" in directory D:/Cproject/opencv/opencv/sources/modules/features2d
linked by target "opencv_features2d" in directory D:/Cproject/opencv/opencv/sources/modules/features2d
linked by target "opencv_features2d" in directory D:/Cproject/opencv/opencv/sources/modules/features2d
linked by target "opencv_perf_features2d" in directory D:/Cproject/opencv/opencv/sources/modules/features2d
linked by target "opencv_calib3d" in directory D:/Cproject/opencv/opencv/sources/modules/calib3d
linked by target "opencv_calib3d" in directory D:/Cproject/opencv/opencv/sources/modules/calib3d
linked by target "opencv_test_calib3d" in directory D:/Cproject/opencv/opencv/sources/modules/calib3d
linked by target "opencv_perf_calib3d" in directory D:/Cproject/opencv/opencv/sources/modules/calib3d
linked by target "opencv_cudafeatures2d" in directory D:/Cproject/opencv/opencv/sources/modules/cudafeatures2d
linked by target "opencv_cudafeatures2d" in directory D:/Cproject/opencv/opencv/sources/modules/cudafeatures2d
linked by target "opencv_test_cudafeatures2d" in directory D:/Cproject/opencv/opencv/sources/modules/cudafeatures2d
linked by target "opencv_perf_cudafeatures2d" in directory D:/Cproject/opencv/opencv/sources/modules/cudafeatures2d
linked by target "opencv_cudalegacy" in directory D:/Cproject/opencv/opencv/sources/modules/cudalegacy
linked by target "opencv_cudalegacy" in directory D:/Cproject/opencv/opencv/sources/modules/cudalegacy
linked by target "opencv_test_cudalegacy" in directory D:/Cproject/opencv/opencv/sources/modules/cudalegacy
linked by target "opencv_perf_cudalegacy" in directory D:/Cproject/opencv/opencv/sources/modules/cudalegacy
linked by target "opencv_cudaobjdetect" in directory D:/Cproject/opencv/opencv/sources/modules/cudaobjdetect
linked by target "opencv_cudaobjdetect" in directory D:/Cproject/opencv/opencv/sources/modules/cudaobjdetect
linked by target "opencv_perf_cudaobjdetect" in directory D:/Cproject/opencv/opencv/sources/modules/cudaobjdetect
linked by target "opencv_test_cudaobjdetect" in directory D:/Cproject/opencv/opencv/sources/modules/cudaobjdetect
linked by target "opencv_cudaoptflow" in directory D:/Cproject/opencv/opencv/sources/modules/cudaoptflow
linked by target "opencv_cudaoptflow" in directory D:/Cproject/opencv/opencv/sources/modules/cudaoptflow
linked by target "opencv_test_cudaoptflow" in directory D:/Cproject/opencv/opencv/sources/modules/cudaoptflow
linked by target "opencv_perf_cudaoptflow" in directory D:/Cproject/opencv/opencv/sources/modules/cudaoptflow
linked by target "opencv_perf_cudastereo" in directory D:/Cproject/opencv/opencv/sources/modules/cudastereo
linked by target "opencv_cudastereo" in directory D:/Cproject/opencv/opencv/sources/modules/cudastereo
linked by target "opencv_cudastereo" in directory D:/Cproject/opencv/opencv/sources/modules/cudastereo
linked by target "opencv_test_cudastereo" in directory D:/Cproject/opencv/opencv/sources/modules/cudastereo
linked by target "opencv_test_stitching" in directory D:/Cproject/opencv/opencv/sources/modules/stitching
linked by target "opencv_stitching" in directory D:/Cproject/opencv/opencv/sources/modules/stitching
linked by target "opencv_stitching" in directory D:/Cproject/opencv/opencv/sources/modules/stitching
linked by target "opencv_perf_stitching" in directory D:/Cproject/opencv/opencv/sources/modules/stitching
linked by target "opencv_superres" in directory D:/Cproject/opencv/opencv/sources/modules/superres
linked by target "opencv_superres" in directory D:/Cproject/opencv/opencv/sources/modules/superres
linked by target "opencv_test_superres" in directory D:/Cproject/opencv/opencv/sources/modules/superres
linked by target "opencv_perf_superres" in directory D:/Cproject/opencv/opencv/sources/modules/superres
linked by target "opencv_videostab" in directory D:/Cproject/opencv/opencv/sources/modules/videostab
linked by target "opencv_videostab" in directory D:/Cproject/opencv/opencv/sources/modules/videostab
linked by target "opencv_traincascade" in directory D:/Cproject/opencv/opencv/sources/apps/traincascade
linked by target "opencv_createsamples" in directory D:/Cproject/opencv/opencv/sources/apps/createsamples
linked by target "opencv_annotation" in directory D:/Cproject/opencv/opencv/sources/apps/annotation
linked by target "opencv_visualisation" in directory D:/Cproject/opencv/opencv/sources/apps/visualisation
linked by target "opencv_version" in directory D:/Cproject/opencv/opencv/sources/apps/version

這裡的解決方法可以參考部落格:http://blog.csdn.net/u014613745/article/details/78310916

3.設定環境,將opencv的庫加入路徑

sudo gedit /etc/ld.so.conf

此時在開啟的檔案中加入/usr/loacl/lib,儲存退出

sudo ldconfig
sudo gedit /etc/bash.bashrc 

此時在開啟的檔案末尾加入PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH,儲存退出

source /etc/bash.bashrc

4.檢驗

pkg-config opencv --modversion

至此opencv的安裝就完成了

三、修改cv_bridge和cmake

本來到上一步就已經結束,但是我在catkin_ws中catkin_make時遇到幾個問題,一個是cv_bridge一個是opencv的版本,雖然opencv3,.2已經安裝完成,但是catkin_make的時候可以看到opencv被檢測的版本是4.1.1以及cv_bridge報錯,後來發現opencv安裝完成之後在usr/include中出現了opencv,而我們安裝的opencv在usr/local/include中並且cv_bridge報錯,這裡需要修改一下cmake和cv_bridge才能順利編譯下去。

這裡是我遇到的錯誤和解決方法,catkin_make時出現了這個錯誤
在這裡插入圖片描述
這需要修改cmake

cd opt/ros/melodic/share/cv_bridge/cmake
sudo gedit cv_bridgeConfig.cmake

找到如下的位置。在這裡插入圖片描述
可以看到cv_bridgeConfig.cmake中參照opencv的路徑是/usr/inclde/opencv,到這個路徑可以看到資料夾是opencv4不是opencv,所以會按照下面一行的路徑去尋找參照,路徑同樣也是/usr/inclde/opencv,然而之前自己安裝的opencv的路徑在/usr/local/include中,所以我們下面要對cv_bridgeConfig.cmake中opencv的參照地址進行修改,在cv_bridgeConfig.cmake中把
set(_include_dirs 「include;/usr/include;/usr/local/opencv2」)
改成
set(_include_dirs 「include;/usr/local/include;/usr/local/include/opencv2」)
如圖所示
在這裡插入圖片描述
catkin_make中還可能遇到如下圖所示的問題:
在這裡插入圖片描述
這是剛剛安裝的opencv版本還沒有被系統識別出來,需要進行如下修改:
開啟自己安裝的opencv的build資料夾,同時開啟/usr/lib/aarch64-linux-gnu/cmke/opencv4
把opencv build資料夾中的對應檔案複製到opencv4資料夾中,其中OpenCVModules-realease.cmake可能沒有,這個好像也沒有影響。
在這裡插入圖片描述
再次在catkin_ws中catkin_make就可以了