您的位置:首页 > 运维架构

Ubuntu下在openCV3.2中配置opencv_contrib,然后使用SURF算子

2017-10-02 20:54 513 查看
最近用openCV3.2,发现无法使用SURF做特征点的检测。百度了一下,发现了是这样解释的。

“图像识别中的特征点检测中,需要用到Surf和Sift算法,但是这两个算法在OpenCV 3.2的Release版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块”。

安装好openCV_contrib用了我一下午时间,才让代码在openCVC3.2的环境下编译通过,这里分享下我的方法。

我配置的前提是我的电脑已经配置好了oepnCV3.2,这个时候就要下一个和openCV3.2相匹配的openCV_contribe文件。也就是pencv_contrib的版本一定要与opencv的版本一致,这是顺利安装的前提,一定注意。

下载地址:我没保存,后面补上

下面说说我的安装流程:

1.第一步:

打开openCV3.2的build目录。

比如根据我的openCV安装目录是这样的

cd /home/dx/opencv3.2/opencv-3.2.0/build


第二步:cmake,一般Ubuntu都会安装,如果想确定自己安装没有,直接在控制台输入:cmake,就会显示Cmake的所有信息。

下面看看命令

$ cmake -DOPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ ~/opencv/


注意上面有两个~,每一个后面跟了一个路径,第一个是opecnv_contrib下的modules,第二个是opencv的源目录。

比如根据我的系统里面的安装路径:

就是这样的

$ cmake -DOPENCV_EXTRA_MODULES_PATH=/home/dx/Downloads/opencv_contrib-3.2.0/modules /home/dx/opencv3.2/opencv-3.2.0


这里我没有用~,~ 即用户家目录 /home/username,我的家目录就是/home/dx。

再次强调contrib和openCV版本好应该一致,否则这里报错。

第三步:

make -j8


具体我也不知道具体意思

第四步:

sudo make install


经过这几部,我的contrib就配置好了。

参考链接:http://blog.csdn.net/lemianli/article/details/73614453

http://blog.csdn.net/CupidYzw97/article/details/74857467

下面在说说怎么使用SURF,这个和openCV2.X中有不同:

使用格式为:

Ptr<SURF> detector = SURF::create(minHessian);
detector->detect(img_1, keypoints_1);

Ptr<SURF> extractor = SURF::create();
extractor->compute(img_1, keypoints_1, descriptors_1);

Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("BruteForce");
matcher->match(descriptors_1, descriptors_2, matches);


可能这样后,编译还是会报SURF的一些错误,

我看了这篇博客后:http://blog.csdn.net/qq_22033759/article/details/48413657

在代码里加了

using namespace cv:xfeatures2d;


就可以顺利编译了。

好了,继续调后面的代码了,国庆节第二天一下午就用来折腾这个了,宝宝心里苦啊。

果然还有问题,编译通过了,运行找不到lib,错误如下



也就是找不到error while loading shared libraries: libopencv_xfeatures2d.so.3.2。

主要是要重新配置openCV环境变量的问题。

然后下面说说怎么解决,直接参考这篇博客,很详细。

http://blog.csdn.net/cv_you/article/details/77341631

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu opencv surf