文 | MESeraph
00 | 移除jetpack自带的opencv
sudo apt purge *libopencv*
01 | 安装依赖
sudo apt update
sed -i 's#ports.ubuntu.com#mirrors.tuna.tsinghua.edu.cn#g' /etc/apt/sources.list
sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libswscale-dev libtbb2 libtbb-dev
sudo apt install -y python-dev python3-dev python-numpy python3-numpy
sudo apt install -y curl software-properties-common
sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main"
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev libjasper-dev
sudo apt install -y libavcodec-dev libavformat-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libv4l-dev v4l-utils qv4l2 v4l2ucp libdc1394-22-dev
01 | 下载opencv源码
curl -L https://github.com/opencv/opencv/archive/4.1.0.zip -o opencv-4.1.0.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.0.zip -o opencv_contrib-4.1.0.zip
unzip opencv-4.1.0.zip
unzip opencv_contrib-4.1.0.zip
cd opencv-4.1.0/
02 | 编译安装OpenCV
mkdir release
cd release/
cmake -D WITH_CUDA=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.0/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 OPENCV_GENERATE_PKGCONFIG=ON\
-D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j6
sudo make install
03 | 卸载
1 进入安装目录
make uninstall
03 | 问题解决
- 使用docker build构建镜像时,编译opencv出错:
fatal error sys/videoio.h: no such file or directory
解:修改docker默认运行环境为nvidia,具体步骤如下:
修改/etc/docker/daemon.json文件内容如下:
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
重启docker daemon:
sudo systemctl restart docker
如果你不想编译cuda相关,也可以设置WITH_CUDA=OFF -D CUDA_nppi_LIBRARY=true
就不会报以上错误。
- 编译时报错
fatal error :Eigen/Core: No such file or directory
。
解决:sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
。