Rob Hess的SIFT算法的C语言实现(基于OpenCV)(调通!!!)

2023-11-04 10:48

本文主要是介绍Rob Hess的SIFT算法的C语言实现(基于OpenCV)(调通!!!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

顺序:

1. http://www.opencv.org.cn/forum/viewtopic.php?f=10&t=1472

2. http://www.opencv.org.cn/index.php/User:Lmyanglei

 

 

问题解决:

1.我运行时也出现了这种情况,我看了一下函数cvEigenVV的定义,的确是参数的个数少了,原因可能是程序编写时用的opencv的版本和正在使用的opencv版本不同,我的是opencv2.0 ,而程序很可能是用opencv1.0 编写的,所以会出现以上问题,但目前我不太会解决,因为我不知道该加上的参数的值是什么。正在研究中。。。。

 

已经找到解决方法了,我是基于visual studio 2008版本运行的。
运行siftFeature工程时 出现两个错误,一是 cvSaveImage 输入参数太少,一是cvEigenVV函数输入参数太少,可以在程序中对应的函数名上点右键,选择转到定义,就能看到,opencv2.0中的函数定义参数个数变多了。可以在程序中,将cvSaveImage( out_img_name, img);改成
cvSaveImage( out_img_name, img,0); 将cvEigenVV( &M, &V, &E, DBL_EPSILON);改成
cvEigenVV( &M, &V, &E, DBL_EPSILON,-1,-1);即可。
如果编译时出现不能打开cvd.lib或xxx.lib的情况,原因是opencv2.0版本的cvd.lib已经变成了cv200d.lib,这个变化在 opencv安装目录/lib中可以看到。只需在相应的工程->属性->连接器->输入的debug和release中将相应的xxxd.lib改成xxx200d.lib,在release下是xxx.lib改成xxx200.lib;注意opencv原来有的库文件,opencv2.0可能不存在或改换了别的名,如cvcam.lib,我目前不知道在opencv2.0中,它在哪里,因此,我就将这一各lib从附加项中删掉了,没有影响程序运行。目前程序调试成功。以上是我摸索得到的结果,如果有不正确的地方,欢迎批评指正!

 

2.

 

编译还是提示错误,系统文件里面。
大概是说在":"之前缺少“{”,原因是match.c 文件中
既加入了 stdio.h 和 iostream.h (vs中要改成iostream)
把#include <iostream.h> 一句注释掉即可编译通过。
3.
VC下GSL的配置问题解决了  :) GSL版本:gsl-1.8.exe
在Tools下选择Option选项,在“Include Files”下添加“C:/Program Files/GNUWIN32/Include”;“Library Files"下添加“C:/Program Files/GnuWin32/lib” 编译运行就OK了  :) 曾经为此困扰,特写下来,希望对后来人有帮助  :)
下面就可以编译运行Rob Hess的源码了。

 

这篇关于Rob Hess的SIFT算法的C语言实现(基于OpenCV)(调通!!!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/345243

相关文章

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被