资源简介
基于C语言实现的SIFT算法,实现SIFT图像特征提取,以及基于SIFT的图像拼接。能直接运行
代码片段和文件信息
#include “stitch.h“
#include “io.h“
#include “time.h“
#include
#include
#define MaxPics 45
#define MaxOut 3
#pragma comment(lib“ANN.lib“)
int Color[3][8] = { 20 20 100 100 150150 230230
100150 150 230 20 230 100 20
20 150 230 20 150 230 100 100};
double FOCAL = 680;
double HH = 2;
int IntialImageID = 0;
double LOWRATIO = 0.0;//0.07; //0.095;
int MODE = 0;
int Manuel = 0;
double ManuelShift = 0.1259;//0.125920;
int filenum;
void buildKDTree(IplImage *inImg vector *keypointsANNkd_tree **kdTree);
void findNextImage(IplImage *inImg[MaxPics]ANNkd_tree* kdTree[MaxPics]vector keypoints[MaxPics]int nowIDint &NextID int Flag[MaxPics]CvMat *bestHomo);
void seqNextImage(IplImage *inImg[MaxPics]ANNkd_tree* kdTree[MaxPics]vector keypoints[MaxPics]int nowIDint &NextIDCvMat *bestHomo);
void findTargetHomo(IplImage *inImg[MaxPics]ANNkd_tree* kdTree[MaxPics]vector keypoints[MaxPics]int nowIDint NextIDCvMat *bestHomo);
void seqNextImage2(IplImage *inImg[MaxPics]ANNkd_tree* kdTree[MaxPics]vector keypoints[MaxPics]int nowIDint &NextIDint ind[MaxPics]CvMat *bestHomo);
int readDir(char *pathchar fnames[MaxPics][100]);
int readDir(char *pathchar fnames[MaxPics][100])
{
struct _finddata_t c_file;
int hFile;
filenum=0;
char fullpath[100];
sprintf(fullpath“%s\\*.jpg“path);
printf(fullpath);
// Find first .c file in current directory
if( (hFile = _findfirst( fullpath &c_file )) == -1L )
printf( “No *.jpg files in current directory %s!\n“fullpath);
else
{
printf( “Listing of .jpg files in %s directory\n\n“path);
printf( “RDO HID SYS ARC FILE SIZE\n“ ‘ ‘ );
printf( “--- --- --- --- ---- ----\n“ ‘ ‘ );
do {
// char buffer[30];
printf( ( c_file.attrib & _A_RDONLY ) ? “ Y “ : “ N “ );
printf( ( c_file.attrib & _A_SYSTEM ) ? “ Y “ : “ N “ );
printf( ( c_file.attrib & _A_HIDDEN ) ? “ Y “ : “ N “ );
printf( ( c_file.attrib & _A_ARCH ) ? “ Y “ : “ N “ );
//ctime_s( buffer _countof(buffer) &c_file.time_write );
printf( “ %-15s %9ld\n“c_file.name c_file.size );
sprintf(fnames[filenum]“%s\\%s“pathc_file.name);
filenum++;
} while( _findnext( hFile &c_file ) == 0 );
_findclose( hFile );
}
return filenum;
}
int main(int argc char **argv){
argv[0]=“stitch.exe“;
argv[1]=“test114“;
IplImage *inImg[MaxPics];
IplImage *inImgc[MaxPics];
vector keypoints[MaxPics];
ANNkd_tree* kdTree[MaxPics];
//////readFile
char fdir[MaxPics][100];
filenum = readDir(argv[1]fdir);
if(argc>2){
MODE = atoi(argv[2]);
if(MODE == 1){
if(argc>3){
Manuel = atoi(argv[3]); //数据类型转换
printf(“Mode=%d Manuel=%d“MODEManuel);
if(argc>4){
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 397312 2006-04-12 21:23 sift\ANN.dll
文件 533 2006-04-12 00:20 sift\main.dsw
文件 1093 2008-09-01 09:54 sift\main.plg
文件 897 2006-04-15 16:10 sift\main.sln
..A..H. 8704 2007-04-24 12:12 sift\main.suo
文件 4692 2006-04-30 20:36 sift\main.vcproj
文件 140288 2008-09-02 13:19 sift\main.ncb
文件 34756 2005-05-04 05:03 sift\ANN.h
文件 8340 2005-05-04 05:03 sift\ANNperf.h
文件 6369 2005-05-04 05:03 sift\ANNx.h
文件 1831 2008-01-01 11:24 sift\stitch.h
文件 137371 2008-09-02 13:13 sift\panorama_1.jpg
文件 1776423 2008-01-10 11:05 sift\test1.rar
文件 3801 2008-04-21 15:38 sift\main.dsp
文件 34756 2005-05-04 05:03 sift\ANN\ANN.h
文件 8340 2005-05-04 05:03 sift\ANN\ANNperf.h
文件 6369 2005-05-04 05:03 sift\ANN\ANNx.h
文件 397312 2006-04-12 21:23 sift\Debug\ANN.dll
文件 843824 2008-05-04 16:08 sift\Debug\cv100.dll
文件 1011764 2006-10-18 21:49 sift\Debug\cxcore100.dll
文件 79124 2008-05-04 16:22 sift\Debug\libguide40[1].dll.zip
文件 184320 2004-03-15 19:52 sift\Debug\libguide40.dll
文件 626741 2006-10-18 21:50 sift\Debug\highgui100.dll
文件 230400 2008-09-02 13:12 sift\Debug\vc60.idb
文件 184320 2008-09-01 09:54 sift\Debug\vc60.pdb
文件 0 2008-09-01 09:54 sift\Debug\main.sbr
文件 0 2008-09-01 09:19 sift\Debug\sift.sbr
文件 0 2008-09-01 09:19 sift\Debug\stitch.sbr
文件 902144 2008-09-01 09:54 sift\Debug\main.pdb
文件 122420 2008-05-18 20:52 sift\Debug\panorama_1.jpg
............此处省略43个文件信息
相关资源
- c实现的sift算法源代码
- SIFT特征提取C++
- 基于SIFT多幅图像拼接系统 毕设源码
- vc下的sift程序
- SIFT算法_全景图像拼接VC源码有中文注
- APAP图像拼接开源代码
- 基于SIFT特征全景图像拼接C语言实现
- opencv+MFC实现图像拼接
- 纯C语言写的sift算法,亲测,可用,可
- 基于块匹配的图像拼接 源码,C++实现
- sift算法C++opencv实现代码
- sift算法的C源码(网上唯一原创版本不
- sift-surf-orb通用程序
- BOW+SIFT特征提取OpenCV实现
- surfsift算法配准,利用Ransac去除误匹配
- 全景图像拼接程序源代码VC++
- 图像拼接使用VC++实现完成两幅又重叠
- SIFT代码,C/C++
- 全景图像拼接
- Opencv3中SIFT算法详解
- yuv编解码(2x2 YUV图像拼接)
- OpenCV图像拼接项目
- c++ 图像拼接
评论
共有 条评论