开发环境: 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
晚上花了几个小时终于把问题解决了,故记录一下。
Jetson TX2 (Jetpack4.4)源码编译OpenCV4.4.0
原文:https://www.cnblogs.com/nacao/p/14089158.html