配置opencv

原帖转于csdn 为了以后的学习
https://blog.csdn.net/weixin_41695564/article/details/79925379

前言:
由于OpenCV功能越来越臃肿,OpenCV3改变了项目架构,使用内核+插件的架构形式。 因此,OpenCV从2.x到3.x是一个很大的转变,对于很多功能不完善、性能不稳定的模块,都被放到了extra_modules(扩展模块)里面了。在Github中,除了存放正式版OpenCV的主仓库和新增加的OpenCV_extra仓库外,还添加了一个OpenCV_contrib的全新仓库,功能有:脸部识别、文本识别、边缘检测、追踪算法等,里面存放的是功能未稳定的代码,如果需要使用这些功能,就需要重新进行编译。
由于任务要求,需要把OpenCV的扩展模块中的xfeatures给包含进来,因此自己手动编译OpenCV3.1.0与其扩展模块实现。这个过程其实并不难,只要如下三步即可实现。在正式开始之前,有些准备工作需要做,就是下载OpenCV3.1.0还有其扩展模块,以及CMake GUI工具。在这里,我先贴出下载地址,大家如果有需要可以去上面下载。

OpenCV3.1.0下载地址:
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download

OpenCV3.1.0安装教程:
https://blog.csdn.net/qq_17550379/article/details/78201442

OpenCVcontrib下载地址:
https://github.com/opencv/opencv_contrib

cmake-gui下载地址(3.11.0): https://cmake.org/download/

一、下载OpenCV contrib
这里我事先已经下载并配置好了VS2015和OpenCV3.1.0,所以我们直接下载OpenCVcontrib,进入上面给出的网址,点击releases,如下:

下载contribe

进入releases以后:

release

由于我的OpenCV版本是3.1.0,因此我们下载对应的zip压缩文件到指定文件夹下,如下:

zip

下载好以后我们对其进行解压缩:

解压

进入解压后的文件夹下:

解压后.png

二、下载cmake-gui**

我们进入网址,选择win64位版本对应的压缩包,如下所示:

cmake下载

点击下载:

下载

下载好以后,我们对其进行解压缩:

然后我们在OpenCV的安装目录下新建一个newbuild文件夹,用来存放编译扩展模块后的生成文件:

解压后

打开其bin目录下的cmake-gui.exe工具:

camake-gui

运行该程序,输入如下目录:

运行

然后点击Generate进行编译:

编译

第一次导出时需要设置后面用来编译此OpenCV.sln工程的VS的版本(这里特别要注意的是,自己机器上是否装有相应的VS版本,如果没有装,还是要编译就会出错,可能是找不到对应的工具原因,以及选择X86和X64),这里用的是VS 2015。

注意版本

稍等片刻:

微信截图_20180911191559.png

(1)真是天有不测风云,人有悲欢离合,结果报错:

Downloading opencv_ffmpeg.dll...

CMake Error at cmake/OpenCVUtils.cmake:895 (file):
file DOWNLOAD HASH mismatch

for file: [D:/OpenCV3.1/opencv/sources/3rdparty/ffmpeg/downloads/89c783eee1c47bfc733f08334ec2e31c/opencv_ffmpeg.dll]
expected hash: [89c783eee1c47bfc733f08334ec2e31c]
actual hash: [3f05c9b2e6866360eedb35ff3dddff65]
status: [28;"Timeout was reached"]

Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:206 (include)
CMakeLists.txt:536 (include) 

CMake Error at cmake/OpenCVUtils.cmake:899 (message):
Failed to download opencv_ffmpeg.dll. Status=28;"Timeout was reached"
Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:206 (include)
CMakeLists.txt:536 (include) 

仔细分析,其实是sources\3rdparty\ffmpeg\downloads目录下的opencv_ffmpeg.dll,由于下载不成功导致以上错误 。

于是我们自行下载这两个文件:

下载网址如下

https://raw.githubusercontent.com/Itseez/opencv_3rdparty/8aeefc4efe3215de89d8c7e114ae6f7a6091b8eb/ffmpeg/opencv_ffmpeg.dll

https://raw.githubusercontent.com/Itseez/opencv_3rdparty/8aeefc4efe3215de89d8c7e114ae6f7a6091b8eb/ffmpeg/opencv_ffmpeg_64.dll

然后再将opencv_ffmpeg.dll放在目录下
sources\3rdparty\ffmpeg\downloads\89c783eee1c47bfc733f08334ec2e31c

将opencv_ffmpeg_64.dll放在目录
sources\3rdparty\ffmpeg\downloads\35fe6ccdda6d7a04e9056b0d73b98e76

(2)重新编译,结果又发生错误:

CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file):
file DOWNLOAD HASH mismatch

for file:[D:/OpenCV3.1/opencv/sources/3rdparty/ippicv/downloads/windows-04e81ce5d0e329c3fbc606ae32cad44d/ippicv_windows_20151201.zip]
expected hash: [04e81ce5d0e329c3fbc606ae32cad44d]
actual hash: [f407b66b95729ddd35da423d75ba651a]
status: [28;"Timeout was reached"]

Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:110 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:237 (include)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:537 (include) 

CMake Error at 3rdparty/ippicv/downloader.cmake:77 (message):
ICV: Failed to download ICV package: ippicv_windows_20151201.zip.
Status=28;"Timeout was reached"
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:110 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:237 (include)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:537 (include) 

Configuring incomplete, errors occurred!

See also "D:/OpenCV3.1/opencv/newbuild/CMakeFiles/CMakeOutput.log".

See also "D:/OpenCV3.1/opencv/newbuild/CMakeFiles/CMakeError.log".

仔细分析,原理是ippicv无法下载,我们自己手动下载:

下载地址如下
https://raw.githubusercontent.com/Itseez/opencv_3rdparty/81a676001ca8075ada498583e4166079e5744668/ippicv/ippicv_windows_20151201.zip

windows平台,将ippicv_windows_20151201.zip放在
sources\3rdparty\ippicv\downloads\windows04e81ce5d0e329c3fbc606ae32cad44d

将所有需要下载的文件都放到相应的目录,在开始CMake,配置完成:

配置

第一次编译完成之后,我们需要将额外的opencv_contrib加到工程中进行第二次编译,在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录。一次之后如果还有红色的块,继续configure,直到全部变白为止。 然后点击Generate,回提示Generate Done。恭喜,完成了一半!!!

配置ing
peizhiing

编译完成后,我们在资源管理器下查看上面设置的文件输出目录,发现目录下多出了很多文件,其实就是OpenCV.sln工程文件:

查看目录

三、配置VS生成install
> 用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

sln

编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别,也可以选择release,因为自己的工程可能要用到相应的动态链接库。

我们先对项目进行重新生成解决方案:

解决方案

等待一段时间,直至生成完毕:

等待完成

找到CMakeTargets->INSTALL, 右键选择生成install即可。这样就会D:\OpenCV3.1\opencv\newbuild下面多出一个install的文件夹,到如果能成功生成,编译就结束了。

install

等待几分钟:


完成

然后,在工程目录newbuild下的install目录中,可以看到生成了一堆文件,这堆文件代表着编译完成:


微信截图_20180911193440.png

四、配置新的库文件

重新配置OpenCV,新建一个项目打开,然后配置opencv工程属性:


opencv工程属性

打开属性管理器:

opencv工程属性

双击图中Microsoft.Cpp.Win32.use前面的扳手图标,进行配置:

配置

设置可执行文件目录:

配置

设置包含目录:

包含目录

包含以下文件目录:

D:\OpenCV3.1\opencv\newbuild\include
D:\OpenCV3.1\opencv\newbuild\include\opencv
D:\OpenCV3.1\opencv\newbuild\include\opencv2

设置库文件目录:

库目录

设置库目录:

库目录

然后是附加依赖项:

这里版本不同会有出入 放上我的3.2版本的库文件
[opecv3.2]在里面粘贴如下库文件:
opencv_aruco320d.lib
opencv_bgsegm320d.lib
opencv_bioinspired320d.lib
opencv_calib3d320d.lib
opencv_ccalib320d.lib
opencv_core320d.lib
opencv_datasets320d.lib
opencv_dnn320d.lib
opencv_dpm320d.lib
opencv_face320d.lib
opencv_features2d320d.lib
opencv_flann320d.lib
opencv_fuzzy320d.lib
opencv_highgui320d.lib
opencv_imgcodecs320d.lib
opencv_imgproc320d.lib
opencv_line_descriptor320d.lib
opencv_ml320d.lib
opencv_objdetect320d.lib
opencv_optflow320d.lib
opencv_phase_unwrapping320d.lib
opencv_photo320d.lib
opencv_plot320d.lib
opencv_reg320d.lib
opencv_rgbd320d.lib
opencv_saliency320d.lib
opencv_shape320d.lib
opencv_stereo320d.lib
opencv_stitching320d.lib
opencv_structured_light320d.lib
opencv_superres320d.lib
opencv_surface_matching320d.lib
opencv_text320d.lib
opencv_tracking320d.lib
opencv_video320d.lib
opencv_videoio320d.lib
opencv_videostab320d.lib
opencv_xfeatures2d320d.lib
opencv_ximgproc320d.lib
opencv_xobjdetect320d.lib
opencv_xphoto320d.lib

最后设置环境变量, 我的编译生成的OpenCV v14/bin的目录如下:

D:\OpenCV3.1\opencv\newbuild\install\x86\vc14\bin

微信截图_20180911194009.png
微信截图_20180911194014.png

五、代码测试

为了测试扩展模块是否配置成功,我们编写测试代码:

#include<opencv2/opencv.hpp>
#include<iostream>
 
using namespace cv;
using namespace std;
using namespace cv::xfeatures2d;
 
int main( )
{
    Mat img = imread("1.jpg", IMREAD_GRAYSCALE);
    if (img.empty())
    {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("原图:", CV_WINDOW_AUTOSIZE);
    imshow("原图:", img);
 
    int minHessian = 400;
    Ptr<SURF> detector = SURF::create(minHessian);
    vector<KeyPoint> keypoints;
    detector->detect(img, keypoints);
 
    Mat img_keypoints;
    drawKeypoints(img, keypoints, img_keypoints, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
    namedWindow("key points", CV_WINDOW_AUTOSIZE);
    imshow("key points", img_keypoints);
 
    waitKey(0);
    return 0;
}

运行代码,结果如下:

SURF特征匹配效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335