上周开始转了项目组,涉及到OpenCV这东西,以前光听说但没有实际用过,也不清楚它究竟是做什么的。
如今开始要用它了,其实它能做啥,如何做,还真不太清楚,只是有听说人工智能的应用,好高大上啊,所以赶紧开始研究它
其他工程师已经写了个图片标注工具,但确实不太好用,所以我想把它改变一下,原以为用他们的代码直接修改,一问才知道用了OpenCV,还说三行代码就可以了,wk,这么简单啊,再问得多,别人似乎不太想说,机密机密不可泄露,没办法,真得从头开始摸索了
本篇文章说明如何编译,其实也是从网上搜索后自己再摸索一下,虽然中间也出现了一点小插曲,但比起原来qt的安装还真是爽到天上了
这个OpenCV的编译,是我经历过的不多的开源项目安装或者编译中最容易的一个
现项目组使用的是OpenCV2.4版本的,我总是喜欢用最新的代码,所以我就直接从网上搜索下载了个OpenCV3.3.0的源代码。
其实我是下载了两个,一个是opencv-3.3.0.zip,一个是opencv-3.3.0-vc14.exe。后面这个exe自解压后,有两个目录,一个是build,一个是sources,其中build里的文件数量似乎不足,只有几个,所以这个exe我就没有怎么管了,后面的操作都是针对zip这个文件的。
说明:
1. 需要准备工具cmake-gui,用于对解压后的cmake文件进行操作,使其自动生成vs的编译工程。我使用的是CMake3.4.3版本,其它版本没有试过,不确定会不会有什么麻烦
2. 使用vs2015编译
首先解压,得到的目录结构和exe解压后的sources里的一样。部分目录如下所示:
Q:\soft\prog\OpenCv\opencv-3.3.0\3rdparty\
Q:\soft\prog\OpenCv\opencv-3.3.0\apps\
Q:\soft\prog\OpenCv\opencv-3.3.0\cmake\
Q:\soft\prog\OpenCv\opencv-3.3.0\data\
为了方便对文件的管理,在解压后的目录中创建一个新目录build,所有的工程文件都准备放到此目录中。
Q:\soft\prog\OpenCv\opencv-3.3.0\build\
打开cmake-gui工具,选择源代码目录(Where is the source code)Q:\soft\prog\OpenCv\opencv-3.3.0\data\,选择保存到的目录(Where to build the binaries)Q:\soft\prog\OpenCv\opencv-3.3.0\build\
然后根据列表框下面的提示,先“Configure”,我记得大约10分钟左右结束,列表框中显示很多红色,不用担心,再“Generate”后等待几分钟就全部结束了。然后在build目录下可以看到生成了vs2015的工程文件
用vs2015打开build下面的OpenCV.sln工程,估计要等一会儿才行,可以看到大约加载了70多个工程,直接编译,大约20分钟全部编译成功。
然后我再选择release编译,结果,出现了大量的错误,实在是弄不清楚为什么,后来也不管它了,接下来我在用的时候提示缺少相应的文件,然后从缺少的第一个开始一个工程一个工程地手动编译,结果它就全部编译通过了,晕。
编译后,生成的dll文件在build/bin目录中,lib文件在build/lib目录中
为了后期的使用方便,我对include目录进行了整理,原代码中的include目录太过分散,对vs不好设置路径,所以我在根目录中建立了一个新的目录libs:
Q:\soft\prog\OpenCv\opencv-3.3.0\libs\
然后把以下目录中的include目录全部拷贝进来,如果有提示合并或者覆盖,点确定即可:
Q:\soft\prog\OpenCv\opencv-3.3.0\
Q:\soft\prog\OpenCv\opencv-3.3.0\modules下各子目录中
Q:\soft\prog\OpenCv\opencv-3.3.0\build\
总共估计有10好几个目录中有include目录,这样拷贝之后,在vs中添加Q:\soft\prog\OpenCv\opencv-3.3.0\libs\的三个目录到包含目录选项中就可以了:
Q:\soft\prog\OpenCv\opencv-3.3.0\libs\include
Q:\soft\prog\OpenCv\opencv-3.3.0\libs\include\opencv
Q:\soft\prog\OpenCv\opencv-3.3.0\libs\include\opencv2