Jetson TX2 (Jetpack4.4)源碼編譯OpenCV4.4.0


 

開發環境: Ubuntu18.04

      Jetson TX2

查看系統信息:

head -n 1 /etc/nv_tegra_release

 此處Revision為Jetpack版本號。

Step1: 卸載TX2上已經安裝好的OpenCV

1 sudo apt-get purge libopencv*
2 sudo apt autoremove
3 sudo apt-get update

Step2: 安裝OpenCV依賴包

1 sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
2 sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
3 sudo apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy
4 sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
5 sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
6 sudo apt-get install -y curl

Step3: 下載OpenCV 

安裝的OpenCV版本 version = 4.4.0

curl -L https://github.com/opencv/opencv/archive/${version}.zip -o opencv-${version}.zip
curl -L https://github.com/opencv/opencv_contrib/archive/${version}.zip -o opencv_contrib-${version}.zip
unzip opencv-${version}.zip
unzip opencv_contrib-${version}.zip

Step4: CMake

解壓完畢后進入OpenCV目錄下

1 mkdir build
2 cd build/
3 cmake -D WITH_CUDA=ON -D WITH_CUDNN=ON -D CUDA_ARCH_BIN="6.2" -D CUDA_ARCH_PTX="" -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-${version}/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
4 make -j4
5 sudo make install
CUDA_ARCH_BIN="6.2" 對應Jetson TX2,
OPENCV_EXTRA_MODULES_PATH為opencv_contrib解壓后文件的路徑。
前面的步驟都很順利,網上也找到了很多腳本可以自動完成下載安裝,但是在CMake這一步,每次執行指令都是直接返回,也沒有顯示錯誤信息,嘗試了幾個版本的OpenCV發現都是同樣的問題。

解決辦法:
cmake-gui
sudo apt-get install cmake-gui

啟動cmake-gui后導入源碼和build地址,按照之前的-D配置信息勾選,沒有的通過Add Entry添加。 比較關鍵的是 OPENCV_EXTRA_MODULES_PATH 需要手動添加,

 

 

 

可能出現的錯誤及解決辦法:

CUDA: OpenCV requires enabled 'cudev' module from 'opencv_contrib' error still exists

 

 

 如果OPENCV_EXTRA_MODULES_PATH 的路徑正確,HAVE_opencv_cudev 會自動賦值為1。

 

Step5: 編譯安裝

cmake-gui完成后

1 sudo make -j6
2 sudo make install

 

另:

其實Nvidia已經提供了傻瓜式的安裝方法,但如果想按照自己的想法對OpenCV進行編譯,還是需要由源碼入手。

sudo apt-get install -y python-opencv python3-opencv

主要還是最近做的一個項目里,使用了cv2.VideoCapture中的read()方法獲取webcam的圖像,我使用的是logitech C270,大坑,在終端中出現了如下的錯誤,雖然視頻能夠正常顯示,但終端一直報錯實在是難看,查明來源后發現解決辦法竟是重新編譯OpenCV,編譯時設置 WITH_JPEG=OFF即可 。(https://stackoverrun.com/fr/q/4215173)

Corrupt JPEG data: 10 extraneous bytes before marker 0xd6

Corrupt JPEG data: 6 extraneous bytes before marker 0xd3

Corrupt JPEG data: 2 extraneous bytes before marker 0xd0

Corrupt JPEG data: 6 extraneous bytes before marker 0xd3

Corrupt JPEG data: 2 extraneous bytes before marker 0xd3

Corrupt JPEG data: 4 extraneous bytes before marker 0xd6

 

晚上花了幾個小時終於把問題解決了,記錄一下。

 

補充:原本使用的是openCV 3.2.0,在安裝了4.4.0版本后即使和JPEG一起編譯之后也沒有出現之前的錯誤信息,可能真實的原因是來自openCV 3.2.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM