资源简介

Hausdorff距离匹配代码,实现了CANNY边缘特征点、HARRIS特征点、SIFT特征点、SURF特征点的Hausdorff距离匹配

资源截图

代码片段和文件信息

/******************************************
* Copyright (C) 2015 HolaMirai(HolaMirai@163.com)
* All rights reserved.

* 文件名:CFeatures.cpp
* 摘要:图像前置处理,用于获取特征点
* 当前版本:V2.02015年9月14日,HolaMirai完成四种特征点获取方法
* 历史记录:V1.02015年9月13日,HolaMirai创建该文件
******************************************/

#include “CFeatures.h“
#include “highgui.h“
#include   
using namespace cv;

/***********************************************/

/*
* 函数名称:CFeatures
* 函数功能:CFeatures类构造函数
* 函数入口: 
* 输入参数: 需要获取的特征点的特征点类型,值为enum feature_type其中一个
* 输出参数:无
* 返 回 值:
* 其它说明: 
*/
CFeatures::CFeatures(int feature_type)
{
m_type = feature_type;
initModule_nonfree();//if use SIFT or SURF
}

/*
* 函数名称:~CFeatures
* 函数功能:CFeatures类析构函数
* 函数入口: 
* 输入参数: 
* 输出参数:
* 返 回 值:
* 其它说明: 
*/
CFeatures::~CFeatures()
{

}

/*
* 函数名称:getFeatures
* 函数功能:获取特征点
* 函数入口: 
* 输入参数: 待搜索图像的灰度图 grayImg 指针 接受特征点的灰度图像指针 featuresImg featuresImg与 grayImg尺寸相同
* 输出参数:特征点的灰度图像 featuresImg
* 返 回 值:
* 其它说明: 
*/
void CFeatures::getFeatures(IplImage *grayImg IplImage *featuresImg)
{
switch (m_type)
{
case FEATURE_CANNY:
{
assert(grayImg->width == featuresImg->width &&
grayImg->height == featuresImg->height &&
grayImg->nChannels == grayImg->nChannels);

cvCanny(grayImgfeaturesImg50150);
break;
}
case FEATURE_HARRIS:
{
Ptr detector = FeatureDetector::create( “HARRIS“ );    //特征点寻找
detector->detect(grayImg m_vecPoints);
vecPointsToImage(featuresImg);
break;
}

case FEATURE_SIFT:
{
Ptr detector = FeatureDetector::create( “SIFT“ );    //特征点寻找
detector->detect(grayImg m_vecPoints);
vecPointsToImage(featuresImg);
break;
}

case FEATURE_SURF:
{
Ptr detector = FeatureDetector::create( “SURF“ );    //特征点寻找
detector->detect(grayImg m_vecPoints);
vecPointsToImage(featuresImg);
break;
}
default:
break;
}
} /*getFeatures()*/

/*
* 函数名称:vecPointsToImage
* 函数功能:将vector类型的特征点变换成 IplImage 图像类型
* 函数入口: 
* 输入参数: 特征点向量m_vecPoints 接受特征点的灰度图像指针 featuresImg
* 输出参数:特征点的灰度图像 featuresImg
* 返 回 值:
* 其它说明: 
*/
void CFeatures::vecPointsToImage(IplImage *featuresImg)
{
vector::iterator it;
vector::iterator end_it = m_vecPoints.end();

cvZero(featuresImg);

int wh;
uchar *ptr;
for (it = m_vecPoints.begin(); it != end_it; it++)
{
w= (int)it->pt.x;
h = (int)it->pt.y;
ptr = (uchar *)(featuresImg->imageData + h*featuresImg->widthStep + w);
// 特征点置255,其他置0
*ptr = 255;
}
ptr = NULL;
}/*vecPointsToImage()*/

/*
* 函数名称:drawFeatures
* 函数功能:画出特征点
* 函数入口: 
* 输入参数: 显示窗口 name 在哪副图像上画出特征点的图像指针 img
* 输出参数:
* 返 回 值:void
* 其它说明:画出的是最近一次处理的图片的特征点
*/
void CFeatures::drawFeatures(const char *name IplImage *img)
{
IplImage *m_imgShow = cvCloneImage(img);

vector::iterator it;
vector::iterator end_it = m_vecPoin

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-09-16 18:35  haus\
     目录           0  2015-09-16 18:32  haus\Debug\
     文件     1071616  2015-09-16 13:41  haus\Debug\haus.exe
     文件     2475848  2015-09-16 13:41  haus\Debug\haus.ilk
     文件     6196224  2015-09-16 13:41  haus\Debug\haus.pdb
     目录           0  2015-09-16 18:35  haus\haus\
     文件         879  2015-09-10 14:07  haus\haus.sln
     文件       57856  2015-09-16 18:33  haus\haus.v11.suo
     文件        3711  2015-09-16 18:01  haus\haus\CFeatures.cpp
     文件        1528  2015-09-16 18:00  haus\haus\CFeatures.h
     文件       10627  2015-09-16 18:05  haus\haus\CHausdorff.cpp
     文件        2176  2015-09-16 18:05  haus\haus\CHausdorff.h
     文件        3141  2015-09-16 17:52  haus\haus\haus.cpp
     文件        4407  2015-09-16 17:57  haus\haus\haus.vcxproj
     文件        1697  2015-09-16 17:57  haus\haus\haus.vcxproj.filters
     文件         164  2015-09-15 20:59  haus\haus\haus.vcxproj.user
     文件       92232  2015-07-16 10:40  haus\haus\Lena.jpg
     文件        5813  2015-08-17 14:18  haus\haus\lena_model.jpg
     文件       15673  2015-09-10 15:07  haus\haus\ls.jpg
     文件        2599  2015-09-10 15:07  haus\haus\lsm.jpg
     文件        2589  2015-09-12 20:32  haus\haus\lsmm.jpg
     文件        8133  2015-09-12 20:31  haus\haus\lsmm.png
     文件        1170  2015-09-10 14:42  haus\haus\model.jpg
     文件         331  2015-09-16 17:57  haus\haus\readme.txt
     文件      240721  2014-09-08 13:25  haus\haus\sg.jpg
     文件       11376  2015-09-10 16:54  haus\haus\sgt.JPG
     文件        1426  2015-09-10 22:04  haus\haus\sgtt.jpg
     文件       14187  2015-09-10 14:42  haus\haus\src.JPG
     文件         300  2015-09-15 14:08  haus\haus\utilis.cpp
     目录           0  2015-09-16 18:32  haus\Release\
     文件       18944  2015-09-16 18:05  haus\Release\haus.exe
............此处省略1个文件信息

评论

共有 条评论