OpenCV3.x+cmake+win+vs

本文详细记录了解决OpenCV3.4版本中Compute()函数调用问题的过程,包括理解CMake的作用,如何正确配置CMake以编译SIFT、SURF等专利算法,以及解决CMake过程中遇到的各种错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用opencv3.4版本的内部特征点算法的时候,竟然提醒我

黑人问号脸??????什么cpp,怎么调用opencv内部的函数还会特么出问题呢、还偏偏出在Compute()函数调用的时候。

搜了搜博客,竟然是opencv需要cmake?纳尼?为什么需要cmake?cmake有啥用?


为什么需要Cmake

你有没有发现,调用opencv的时候想要查看他们的cpp文件,都找不到。顶多只能找到h文件。说好的opencv开源呢,摔!啊,别急啊。就是开源的,但是需要你cmake,cmake以后就能看到他们的cpp源代码了。

原理:opencv将很多函数加入了函数库,并被编译成了dll,所以我们只能看到函数声明,看不到源代码。

来看看我们的opencv文件夹:

build目录是编译生成的目录,就是用openCV源代码编译生成的2进制库文件集(dll、lib和入口头文件include)。对于编程来说,仅仅需要build这一个文件夹就可以了。因为build文件夹就是在其他文件夹的基础上CMake编译生成的。大部分源代码放在modules文件夹下。

你看,我的source文件夹下是有feature2d.cpp的哦:

但是好奇怪啊。为什么vs看不到cpp文件呢?

在3.0之后版本的Opencv对Sift、Sufer等新算法没有提供直接编译好的动态库来加载使用,因此必须自己编译。这是因为Sift、Sufer算法专利现在是属于哥伦比亚大学,因此opencv对这部分内容及“所谓的”不稳定模块全都放到opencv_contrib中。且只在它的Github中能够找到,opencv的官网上是没有的。因此对于想使用Sift、Sufer、双目立体匹配算法、结构光等新的算法及有专利权算法的同学需要自行编译。


进行Cmake

参考该帖子:https://segmentfault.com/a/1190000003496009

我在github上下载了cmake3.12.4,https://github.com/Kitware/CMake/releases?after=v3.13.2

然后在github上下载opencv额外包:https://github.com/opencv/opencv_contrib

打开cmake-gui.exe,填上路径,选择好编译器,进行编译(先用vs2015进行编译),如果你的项目经常在x86下编译,就选择vs 14 2015,如果你的项目再x64平台下编译,就选择带Win64的。我是x64,就选这个了。

恩,之前选错了,编译了好久,现在这个x64的编译很快。。。。。

编译玩以后会出现Name和Value的框框,这时候把OPENCVEXTRAMODULESPATH的参数设置成opencvcontrib的路径,如下:

因为之前看到有帖子说:

所以我直接也把这个给勾上:

然后点击configure,开始漫长的等待。。。。

来看看opencv_contirb,我发现了这个文件,我说怎么看好多帖子,说自己用的是opencv3.x,然后项目中还用到了xfeatures2d.hpp和nonfree.hpp,但是我的opencv却找不到这个文件,原来是在扩展库下。看来真的需要自己编译。

 诶?报错了,可以看到有些东西cmake根本找不到。那就把那些对号给去掉:

再来,我。。。。看来今天人品不咋样,configure都出错:

什么重复的模块名字???

- - 有老司机告诉我,要用source code,不要用exe运行出来的代码。然后我用了opencv3.4.1的源码,非exe。

开始了新一轮的cmake。这里要说明的是,除了上面我说的要勾上的,还有些东西要勾上:

就这样,重新configure,然后红色消失了。

点击generate:

 

vs打开opencv.sln

如下:

然后在项目上右键,重新生成解决方案,这里需要很久,该忙啥忙啥去。扣扣脚,打打游戏,看看美剧。恩。

过了一个多小时,我回来了,然后。emmmm,真香。

出现最多的问题是这个:

然后经过了漫长的尝试。先是换了cmake版本,换成了3.8,然后换了opencv_contrib,因为我单独cmake opencv是没有问题的,所以推断是opencv_contrib版本不一致导致。最后。

cmake3.8,opencv3.4.1,opencv_contrib3.4.1,vs2015

完美。

重新生成解决方案以后,对着install右键针对项目仅生成就可以了。

接下来就是配置环境变量了。

 

教训:版本真是个大坑

------------------------------------------------END----------------------------------------------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

keneyr

老爷~给小的赏点盘缠吧555~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值