Ubuntu 20.04 + opencv 4 + cuda 11 + opengl 详细配置流程
Ubuntu 20.04 + opencv 4 + contrib + opengl 详细配置流程1.下载opencv源码https://opencv.org/releases/,找到相应的版本,下载Sourceshttps://github.com/opencv/opencv_contrib进入页面后,看右边的 Releases -> 32 tags然后点击tags,找到对应的opencv-contrib然后进行下载opencv_contrib其他如cuda, qt, cmake/cmake-gui等软件安装可参照Ubuntu 软件安装记录2. Configure打开cmake-gui,设定opencv源码路径和build路径,如下
cmake-gui然后先点击configure,出现如下界面CMakeSetup.png默认选择,直接点击 finish然后输出窗口中可能会出现如下的ippicv的安装失败错误(通常网络不好等就会无法下载ippicv加速库)ippicv_error.png手动安装配置ippicvv参照手动配置 Opencv ippicv (适用ubuntu, WSL)之后再次configure,可发现ippicv的问题已解决。2.1 增加cuda搜索框中搜OPENCV_EXTRA_MODULES_PATH,并在之后的value中输入下载好的opencv_contrib-x.x.x/modules的路径。搜索cuda,选中如下选项with_cuda再勾选上BUILD_opencv_world点击configure后出现如下的错误error因为cuda 11移除了nppicom库, 解决方法是,在opencv-x.x.x/cmake/文件夹下,找到OpenCVDetectCUDA.cmake文件,找到下述if(CUDA_FOUND)的位置,在下面加上去掉nppicom的库的指令(行前有+号的)。... if(CUDA_FOUND) set(HAVE_CUDA 1)+ if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")+ ocv_list_filterout(CUDA_nppi_LIBRARY "nppicom")+ ocv_list_filterout(CUDA_npp_LIBRARY "nppicom")+ endif() if(WITH_CUFFT) set(HAVE_CUFFT 1) ...具体可参照Fix cuda11 #17499然后再次configure应该是没有错误了,不要着急点击 generate,先看看还需要增加什么,如果不需要增加,直接略过下一部分。2.2 安装其他可编译项安装Eigensudo apt install libeigen3-dev安装gtk(如果需要同时编译opengl,需要安装gtk2.0)sudo apt install libgtk2.0-dev安装完之后输入pkg-config --modversion gtk+-2.0检验。详细安装可参照# Ubuntu16安装GTK+2.0教程之后可看到cmake-gui输出窗口中,GUI: GTK -> Yes安装gtkglextGtkGlExt这一项必须能够通过cmake检测到,否则即使安装了opengl,cmake也无法检测得到。执行sudo apt install -y libgtkglext1 libgtkglext1-dev安装opengl安装gl环境sudo apt-get install build-essential libgl1-mesa-devsudo apt-get install freeglut3-devsudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev然后cmake-gui中勾选上WITH_OPENGL,继续configure,可看到cmake输出窗口中GUI下如下cmake-gui -> output -> GUI3. make点击generate,生成成功后,cd到cmake的build的目录(就是cmake-gui上指定的build目录),执行make -j11-j表示指定的线程数,根据自己计算机的线程数来设定。(建议线程数不大于最大线程数,否则容易卡死...本人计算机支持最大线程数为12,所以-j11)(此处等待大约1-2小时...)make完之后执行sudo make install完成编译之后的opencv+cuda+opengl....的安装。Others实际使用时,可能会出现无法扩展显示器的问题,或者在程序中出现无法创建cv::cuda::GpuMat的问题,可参照Ubuntu 无法拓展多个显示器欢迎收藏~