本文最后更新于:星期四, 六月 25日 2020, 8:35 晚上

用CMake-gui从源码编译opencv3.4.11

2020-06-25 16:42:00 星期四

About

1、源码安装opencv,各个版本步骤大致相同啦!

2、解决yolov4 使用net = cv2.dnn_DetectionModel(yolov4.cfg', 'yolov4.weights)时,报错error: (-212:Parsing error) Unsupported activation: mish in function 'ReadDarknetFromCfgStream'的问题。


3、为什么要安装 OpenCV_contrib?

OpenCV3.0以上的版本,把一些不稳定的函数放到了第三方库OpenCV_contrib中(比如sift,surf等),为了应用这些功能,我们需要通过CMake OpenCV_contrib中的功能重新加入到OpenCV中。

关于OpenCV_contrib,可以参见官方说明:https://github.com/opencv/opencv_contrib/blob/master/README.md

4、为什么要用CMake-gui(注意,这不是必须的)?

这里我主要使用CMake-gui这个图形化界面进行安装(因为自己对ubuntu的命令不太熟悉…总是出错但又不知道怎么解决掉)。当然,也可以用终端直接输入命令操作,可以参考其他博客,这里就不再讨论。


唠叨唠叨

今天上午将之前的项目用yolov4重新跑了一遍,但是在用cv2.dnn.readNetFromDarknet(configPath, weightsPath)读取.weight文件的时候,出现了报错:

cv2.error: OpenCV(3.4.5) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:686: error: (-212:Parsing error) Unsupported activation: mish in function 'ReadDarknetFromCfgStream'

到git上opencv的issuse中查了查,满屏的英文看得我头大~~~,是opencv版本的问题,翻译了半天,半信半疑的安装了opencv3.4.11-pre版本,刚刚测试了下,报错消失了,good!

趁热打铁,把从源码编译opencv步骤记录下哈!


1环境配置

Ubuntu 16.04
NVIDIA RTX 2080 s
CUDA 10.0.130
CUDNN 7.4.2
Python 3.5与2.x共存,将Python3设为默认
opencv3.4.5 + opencv_contrib3.4.5(卸载了,卸载步骤直接百度吧,简单的很)


2下载opencv和opencv_contrib

链接(opencv3.4.11-pre)https://github.com/opencv/opencv/tree/3.4

链接(opencv_contrib3.4.11)https://github.com/opencv/opencv_contrib/tree/3.4

出去下载会快,不出去的话龟速,怎么出去呢?–如何优雅的冲浪ios移动设备优雅的冲浪免费节点

解压opencv3.4,重命名为opencv(重命名是我自己的习惯,你也可以不)
解压opencv_contrib3.4,重命名为opencv_contrib,将opencv_contrib文件整个放到opencv中

结构如下
–opencv
——opencv_contrib


3修改添加源码

(1)找到 matchers.hpp
路径为 /opencv/modules/stitching/include/opencv2/stitching/detail/matchers.hpp
我这里没有行标,就在一开始的位置

原文是

#ifdef HAVE_OPENCV_XFEATURES2D
#  include "opencv2/xfeatures2d/cuda.hpp"
#endif

修改为

#ifdef HAVE_OPENCV_XFEATURES2D
#  include "/home/你的用户名/NewDisk(我挂载了机械硬盘)/opencv/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp"
#endif

就是修改为绝对路径,根据你的实际情况改就好啦!

(2)添加文件
将boostdesc_bgm.i等文件添加到opencv/opencv_contrib/modules/xfeatures2d/src/路径下(不添加后期install时报错)
下载地址:https://zhifoudarren.lanzous.com/iPdo7e0yxbc


4下载和添加依赖包

(1)首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:

sudo apt-get update
sudo apt-get upgrade

(2)接着安装官方给的opencv依赖包,在终端输入:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

(3)接下来安装CMake-gui,在终端输入

sudo apt-get install cmake-qt-gui

5配置OpenCV

(1)双击进入解压出来的OpenCV文件夹,右键打开终端(或者在别处打开终端,通过输入cd opencv进入当前目录下),然后依次输入(不要忘了第三行的最后的空格和两个点):

mkdir build
cd build 
cmake-gui ..

(2)然后会弹出CMake的图形化界面,在上方的两个路径里面,选择好代码所在文件夹的路径和要安装的路径(默认的就是正确的)

(3)点击左下方的Configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish

(4)然后CMake即载入默认配置,如下图所示:

(5)修改几个选项

  • CMAKE_BUILD_TYPE 值处输入RELEASE

  • 在BUILD_opencv_world后面打√

  • WITH_CUDA 后打上√(我这里默认是没有√的,使用CUDA加速)

  • WITH_LAPACK 后的 √ 去掉!去掉!去掉!
    否则在install时会报错如下:

    collect2: error: ld returned 1 exit status
    make[2]: *** [bin/opencv_version] Error 1
    make[1]: *** [apps/version/CMakeFiles/opencv_version.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....
  • OPENCV_EXTRA_MODULES_PATH 点击此行最后处会弹出窗口
    然后选择opencv_contrib文件夹中的modules文件夹,注意,不是只选中opencv_contrib文件夹就好了,需要选中里面的modules文件夹! 如下图所示,然后点Choose。

(6)点击Generate生成配置,这一步应该比较快就完成了。
(7)完成之后可以退出cmake-gui,在build目录打开终端,输入make -j12(我的电脑CPU是12线程的),这个过程会很慢,我一度以为卡住了,但是不是,打局王者吃个鸡啥的就好啦!如果上边你按照步骤来的,此时应该不会报什么错!
(8)接着在终端输入sudo make install,就开始安装了,这一步又需要等比较长的时间了……不要急,进行到这一步说明很快就能安装成功了~


当你执行完上面两行命令的时候,并看到100%的时候,恭喜你!安装成功!

6配置环境变量

1、安装成功后还需要设置opencv的环境变量。打开文件:(没有就新建一个空白文档)

sudo gedit /etc/ld.so.conf.d/opencv.conf

2、将以下内容添加到最后

/usr/local/lib

3、接下来配置库:

sudo ldconfig

4、更改环境变量:

sudo gedit /etc/bash.bashrc

5、在文件后添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH

6、保存退出,在运行下面的例程之前,需要重新开启终端来使配置生效。

输入查看opencv版本号 pkg-config --modversion opencv

搞定收工!

注意事项

1、如果你的电脑中Python2和Python3共存,在cmake-gui时可以仔细看下选项,你会看到有关于python dir的选项(大概是python2 dir和python3 dir,我没有截图,反正差不多啦,仔细看就能发现),后边会自动关联到你python环境的安装地址,如果是空的说明你的python环境安装的有问题,我在刚接触opencv时被这个问题困扰了将近一周。如果你遇到这个问题,我建议直接重装系统,重新安装python环境。

2、在步骤5-(6)点击Generate生成配置后,下方会反馈一些信息,可能有你需要的,如果你在安装过程中遇到什么问题,这里可能有信息对你有帮助;我安装时主要看的是python关联的地址对不对,以及NVIDIA CUDA是否关联到了。

3、遇到什么报错信息,百度不到的,一定要记得出去搜搜看,因为百度有很多有用的东西他没收录————所以————搜!不!到!

怎么出去呢?–如何优雅的冲浪ios移动设备优雅的冲浪免费节点

本文作者:Darren
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

本站支持评论邮件提醒功能,在邮箱输入框中留下你的邮箱,这样就能通过邮件收到回复!