[转]OpenCV使用之-----BruteForceMatcher无法使用
最近Opencv升级比较快,从2.4.0到2.4.1到2.4.2,使得我这个还在使用2.3.1的人很不好意思,而且听说新版本里添加了tbb并行功能,急着想用这些功能的我赶紧下了2.4.2。
按部就班的解压、设置c++目录(我使用的是vs2008)、设置环境变量......一系列的完成之后,想用一下surf算法,就尝试着把pdf文档里的代码复制到了vs里,运行一下,发现不行,报错。。。瞬间有点被骗的感觉,这可是从官方发布的pdf里的最新代码啊!!!
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/nonfree/features2d.hpp" using namespace std;
using namespace cv;
char *path1="D:\\TestData\\cvtest\\src\\left01.jpg";
char *path2="D:\\TestData\\cvtest\\src\\left03.jpg"; int main()
{
Mat src1=imread(path1,0); /*namedWindow("image",CV_WINDOW_AUTOSIZE);
imshow("image", src1);
waitKey(0);*/ Mat src2=imread(path2,0);
SurfFeatureDetector detector(400);
vector<KeyPoint> keypoint1,keypoint2;
detector.detect(src1,keypoint1);
detector.detect(src2,keypoint2); SurfDescriptorExtractor extractor;
Mat descriptor1,descriptor2;
extractor.compute(src1,keypoint1,descriptor1);
extractor.compute(src2,keypoint2,descriptor2); BruteForceMatcher<L2<float>> matcher;
vector<DMatch>matches;
matcher.match(descriptor1,descriptor2,matches); namedWindow("matches",1);
Mat img_matches;
drawMatches(src1,keypoint1,src2,keypoint2,matches,img_matches);
imshow("matches",img_matches);
cvWaitKey(0);
return 0;
}
到群里问,大家也刚用2.4.2不久,只有个达人告诉我是头文件的问题。我试着去找了一下,发现2.3.1的include文件和2.4.2的差别很大,新版本里多了很多东西,对比了一下features2d.hpp这个文件,发现原先包含在features2d.hpp的BruteForceMatcher现在根本不在features2d.hpp中,我试着去查找其他有可能在的hpp文件,找了几个,发现这不是解决问题的办法,问google吧!在搜了一下之后发现,还真有人碰到了这个问题,也确实是头文件的问题:缺少了#include<opencv2/legacy/legacy.hpp>,加了之后,发现之前的错误确实没了。
但是新的问题出来了,说link出现问题,没经验的我还是只能问google(谷歌确实强大啊!!!),牛人一针见血的指出了问题所在:For those who would have the same problem, make sure you have ALL the right linker inputs (configuration -> linker -> inputs), included dlls such as opencv, highgui etc.在右键“属性”->"链接器"->“输入”->"附加依赖项"把新输入的legacy的静态文件opencv_legacy242d.lib加进来就ok了!
写的比较乱,希望对用到的人有用吧。
原文连接:OpenCV使用之-----BruteForceMatcher无法使用
[转]OpenCV使用之-----BruteForceMatcher无法使用的更多相关文章
- linux/ubuntu下最简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)
希望这篇文章能彻底帮你解决python opencv安装和使用中的常见问题. 懒人请直奔这一节, 一条命令安装 opencv 使用python-opencv常用的问题 在linux中使用python版 ...
- [OpenCV实战]28 基于OpenCV的GUI库cvui
目录 1 cvui的使用 1.1 如何在您的应用程序中添加cvui 1.2 基本的"hello world"应用程序 2 更高级的应用 3 代码 4 参考 有很多很棒的GUI库,例 ...
- conda opencv cv2.imshow无法使用
error: -------src-dir-------/opencv-2.4.10/modules/highgui/src/window.cpp:501: error: (-2) The funct ...
- opencv 无法使用 dll 动态链接库 UnsatisfiedLinkError java.library.path Can't find dependent libraries
System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 使用如上方法加载本地 dll文件. 一般会出现两种错误: 1. UnsatisfiedLinkError ja ...
- OpenCV特征点检测------ORB特征
OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt ...
- opencv从txt文本读取像素点并显示
opencv从txt文本读取像素点并显示 文本储存格式为每行一个像素点,排列为RGB.每帧图像的帧头为65535. 如下图所示 废话不多说,代码如下: // #include <iostrea ...
- OpenCV成长之路(9):特征点检测与图像匹配
特征点又称兴趣点.关键点,它是在图像中突出且具有代表意义的一些点,通过这些点我们可以用来识别图像.进行图像配准.进行3D重建等.本文主要介绍OpenCV中几种定位与表示关键点的函数. 一.Harris ...
- [转]第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV
仅供参考,还未运行程序,理解部分有误,请参考英文原版. 绿色部分非文章内容,是个人理解. 转载请注明:http://blog.csdn.net/raby_gyl/article/details/174 ...
- 学习OpenCV——Surf简化版
之前写过一遍关于学习surf算法的blog:http://blog.csdn.net/sangni007/article/details/7482960 但是代码比较麻烦,而且其中还涉及到flann算 ...
- [OpenCV] Feature Matching
得到了杂乱无章的特征点后,要筛选出好的特征点,也就是good matches. BruteForceMatcher FlannBasedMatcher 两者的区别:http://yangshen998 ...
随机推荐
- SqlUtils 使用
一.前言 随着 Solon 3.0 版本发布,新添加的 SqlUtils 接口,用于操作数据库,SqlUtils 是对 Jdbc 原始接口的封装.适合 SQL 极少或较复杂,或者 ORM 不适合的场景 ...
- 云原生周刊:Kubernetes v1.30 发布 | 2024.4.22
开源项目推荐 pv-migrate pv-migrate 是一个 CLI 工具/kubectl 插件,可轻松将一个 Kubernetes 的内容迁移 PersistentVolumeClaim 到另一 ...
- JetBrains IDEs 软件全破解
JetBrains IDE相关产品是一系列专为不同编程语言和平台设计的智能开发工具,它们可以帮助开发者提高效率,编写高质量的代码,和享受编程的乐趣.为当世最有影响力的IDE之一. JB 软件分为都分为 ...
- att&ck学习笔记1
一.环境搭建 1.1环境搭建测试 最近想要开始学习内网渗透,搜集了一些教程,准备先实验一个vulnstack靶机,熟悉一下内网渗透操作再学习基础知识. 靶场下载地址:http://vulnstack. ...
- (系列十)Vue3中菜单和路由的结合使用,实现菜单的动态切换(附源码)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- C++ STL 容器简介
1.总述 C++ STL(Standard Template Library)是 C++ 标准库的一部分,包括了许多数据结构的实现,提供了许多好用的轮子,同时,其设计思想也非常值得学习.其中,容器是 ...
- 5.6 Linux Vim撤销和恢复撤销快捷键
使用 Vim 编辑文件内容时,经常会有如下 2 种需求: 对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子. 将文件内容恢复之后,经过仔细考虑,又感觉还是刚 ...
- js 数字计算的精度问题
〇.js 的数值计算存在结果不精确的情况 最近接触财务相关系统,页面上会有一些简单的计算,就发现其实是非常简单的计算,但 js 计算出来的结果却不是预期值,可能带上一大串 0 或 9,导致计算结果错误 ...
- .NET周刊【11月第3期 2024-11-17】
国内文章 .NET 9使用Scalar替代Swagger https://www.cnblogs.com/netry/p/18543378/scalar-an-alternative-to-swagg ...
- Mybatis中foreach的使用
首先我们要明白的是foreach的本质就是把数据库能执行的sql在xml中按照一定语法来进行拼接,所以拼接之前,我们了解一下foreach标签中几个常见元素的作用 1.collection List ...