opencv4需要cuda10,cuda10有需要安装410以上的显卡驱动。
显卡驱动:自己装吧。
cuda10+cudnn7网上都是的,这个不难
官网下载opencv4.0.0和opencv_contrib-4.0.0
解压到指定目录中,将opencv_contrib-4.0.0解压到opencv4.0.0中,文件名不用变
tar -zxvf opencv-4.0.0 -d /home/your_name/
tar -zxvf opencv_contrib-4.0.0 -d /home/your_name/opencv-4.0.0
cd opencv-4.0.0
mkdir build && cd build
sudo cmake -D CMAKE_BUILD_TYPE=Realease -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 -D OPENCV_EXTRA_MODULES_PATH=/home/ypp/opencv-4/opencv_contrib-4.0.0/modules -D OPENCV_GENERATE_PKGCONFIG=YES -D WITH_CUDA=ON -D OPENCV_ENABLE_NONFREE=ON ..
注意库的安装位置是/usr/local/opencv4,这个是自己设置的,因为我还有一个版本,那个版本的库安装在了/usr/local下。
opencv4默认不生成pkgconfig文件,加上OPENCV_GENERATE_PKGCONFIG=YES
扩展包默认不能使用SIFT等库,加上OPENCV_ENABLE_NONFREE=ON即可。
cmake 应该没什么问题,但是下面进行
sudo make -j8
接下来一个重要问题就是,你肯定编译不通过,因为opencv4安装带gpu的版本时,cuda10有一个版本问题,编译不通过,那就是找不到dynlink_nvcuvid.h文件,没错,你就是找不到。上面本来没有cuda_version<10000,这是我自己加的,有几个文件都是这样写的,编译时遇到就找到源文件位置进行修改成我这样的。目的是让他找下面
那个nvcuvid.h文件,但是这个文件也是没有的。不要问为什么,没有就是没有,但是这个文件是可以在网上下载的。忘了网址的,想要的评论吧。解压该文件,在Samples/NvCodec/NvDecoder里面,cp nvcuvid.h cuviddec.h /usr/local/cuda/include下面即可。
编译过去之后就是
sudo make install -j8
能过去就代表安装成功了,接下来就是配置路径了。
cd /etc/ld.so.conf.d
vi opencv4.conf
#打开的是空文件,里面加上
/usr/local/opencv4/lib
#保存退出
sudo ldconfig
#再然后就是添加环境变量到~/.bashrc
sudo vi .bashrc
#在最下面添加
export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig
source .bashrc
#这个pkgconfig本来是默认生成的,但是opencv4就不默认生成了,里面有一个.pc文件,是检查版本时的依据
#这个路径添加到/etc/bash.bashrc里面也行
以上代码都是我手敲的,没有粘贴复制,如果有错也就是拼写错误,自己理解着来就行了。
如果进行到这没有什么问题的话,就安装成功了
pkg-config opencv4 --cflags --libs
可以查看安装的模块了,这个opencv4名称就是pkgconfig文件夹里的.pc文件来的。