OpenCV源码安装教程(兼容CUDA)
Posted 周先森爱吃素
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV源码安装教程(兼容CUDA)相关的知识,希望对你有一定的参考价值。
简介
OpenCV是计算机视觉领域应用非常广泛的工具库。而OpenCV Contrib库是第三方非官方开发的扩充库,这个库可以使用一些特殊算法,如物体跟踪。和英伟达的CUDA配合,OpenCV可以更加高效。
运行环境
- 操作系统为Ubuntu16.04,但是原则上适用于所有类似发行版甚至大多数Linux系统。
- CUDA需要事先安装,通过
nvcc -V
查看是否安装。 - CUDNN需要和CUDA版本配合安装,通过
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
查看是否安装,旧版本将cudnn_version.h
换为cudnn.h
。
安装
依赖安装
sudo apt-get update
sudo apt-get install build-essential cmake unzip pkg-config libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran
sudo apt-get install python3-dev
源码下载
通过下面的命令下载OpenCv和OpenCV Contrib的源码,并切换到指定版本(可选)。
git clone https://github.com/opencv/opencv/
# 非最新版本使用下面的命令切换版本
cd opencv
git checkout 4.1.1
git clone https://github.com/opencv/opencv_contrib.git
# 非最新版本使用下面的命令切换版本
cd opencv_contrib
git checkout 4.1.1
源码编译安装
当前目录下有opencv
和opencv_contrib
两个文件夹。
cd opencv
mkdir build
cd build
接下里我们使用cmake进行源码编译,但是需要指定GPU的计算能力,具体请查看官网,部分如下图。
我们使用下面的命令进行编译(使用的3090计算力为8.6),注意更改自己的安装目录、opencv_contrib目录的路径。
cmake -D CMAKE_BUILD_TYPE=RELEASE \\
-D CMAKE_INSTALL_PREFIX=~/opt/opencv \\
-D INSTALL_PYTHON_EXAMPLES=ON \\
-D INSTALL_C_EXAMPLES=OFF \\
-D OPENCV_ENABLE_NONFREE=ON \\
-D WITH_CUDA=ON \\
-D WITH_CUDNN=ON \\
-D OPENCV_DNN_CUDA=ON \\
-D ENABLE_FAST_MATH=1 \\
-D CUDA_FAST_MATH=1 \\
-D CUDA_ARCH_BIN=8.6 \\
-D WITH_CUBLAS=1 \\
-D OPENCV_EXTRA_MODULES_PATH=~/Downloads/opencv_contrib/modules \\
-D OPENCV_GENERATE_PKGCONFIG=YES\\
-D BUILD_EXAMPLES=ON ..
如果需要安装Pyhon支持,则加入下面两个选项。
-D HAVE_opencv_python3=ON \\
-D PYTHON_EXECUTABLE=~/.virtualenvs/opencv_cuda/bin/python \\
这个过程中可能会有出现xfeatures2d模块缺失boostdesc_bgm.i文件下载超时问题,这个问题可以离线下载如下文件,并将其移动到opencv_contrib/modules/xfeatures2d/src/
目录下,文件我已经打包上传到该链接。
若遇到ippicv_2019_lnx_intel64_general_20180723.tgz
无法下载的问题,可以参考这篇博文离线下载并修改opencv/3rdparty/ippicv/ippicv.cmake
文件中的路径。
当然,如果你只需要安装最简版本的OpenCV,不需要安装OpenCV Contrib,也不需要CUDA支持,那么请使用下面的命令。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=~/opt/opencv -D BUILD_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=YES ..
make install
必要配置
此时,如果没有报错,我们将下面的语句写入~/.bashrc
文件中来添加环境变量,便于库的定位。加入前两条语句后,pkg-config
定位OpenCV,而加入第三条语句后,能在CMakeLists.txt中直接通过FIND_PACKAGE(OpenCV REQUIRED)
命令找到OpenCV。
export PKG_CONFIG_PATH=~/opt/opencv/lib/pkgconfig
export LD_LIBRARY_PATH=~/opt/opencv/lib
export OpenCV_DIR=~/opt/opencv/
注意更新后要通过source ~/.bashrc
重新激活环境变量,然后使用下面的命令确认OpenCV版本,安装正确的话该命令会输出版本号。
pkg-config --modversion opencv4
测试安装
请构建如下一个目录,用于代码测试,其中demo.jpg
随便找一个测试图片即可。
.
├── CMakeLists.txt
├── demo.jpg
└── main.cpp
main.cpp内容如下。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
//读取照片
Mat image = imread("demo.jpg");
//检测失误
if (image.empty())
cout << "Could not open or find the image" << endl;
cin.get(); //等待键盘输入
return -1;
string windowName = "OpenCV Test"; //窗口名称
namedWindow(windowName); //创建新窗口
imshow(windowName, image); //使用新窗口显示照片
waitKey(0); //等待键盘输入
destroyWindow(windowName); //关闭所有窗口
return 0;
CMakeLists.txt
内容如下。
# cmake needs this line
cmake_minimum_required(VERSION 3.1)
# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# Define project name
project(main)
# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)
# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS " config: $OpenCV_DIR")
message(STATUS " version: $OpenCV_VERSION")
message(STATUS " libraries: $OpenCV_LIBS")
message(STATUS " include path: $OpenCV_INCLUDE_DIRS")
# Declare the executable target built from your sources
add_executable(main main.cpp)
# Link your application with OpenCV libraries
target_link_libraries(main LINK_PRIVATE $OpenCV_LIBS)
然后顺次执行下面的命令,成功显示图像则安装测试成功。
cmake .
make
./main
总结
本文介绍了如何在自己的家目录中安装OpenCV,如果OpenCV Contrib和CUDA支持安装有问题,建议按照最简版本先安装使用,很多场景其实只需要最简版本即可。
以上是关于OpenCV源码安装教程(兼容CUDA)的主要内容,如果未能解决你的问题,请参考以下文章
CUDA + pytorch + pycharm + Anaconda + OpenCV安装教程与环境配置
手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
OpenCV 3.2.0 +Win10+ CUDA 8.0+ VS2013 编译
Ubuntu16.04 安装配置 Caffe 过程 (GPU版+CUDA 9.0+cuDNN 9.0+OpenCV 3.4.1)