資源簡介
代碼基于C++的VS環境下編寫,可以直接運行,主要功能是計算生成步態能量圖

代碼片段和文件信息
#include?“StdAfx.h“
#include?“GenerateGEI.h“
#define?H?500??
#define?W?400??
#define?base_RATIO?1.25???
??
??
GenerateGEI::GenerateGEI(const?char*?folderpath)??
{??
????gei_name=new?char[100];??
????sprintf(gei_name“%s\gei_.jpg“folderpath);?//產生的GEI儲存位置??
????num=0;??
}??
??
??
GenerateGEI::~GenerateGEI(void)??
{??
????delete?gei_name;??
}??
??
int?GenerateGEI::InsertImage(Mat?image)??
{??
????num++;??
????Process(image);??
????return?1;??
}??
??
int?GenerateGEI::Process(Mat?image)??
{??
????Mat?origin=FindContours(image);??
????Mat?normal=Resize(origin);??
????Mat?show_gei=CalGei(normal);??
????imwrite(gei_nameshow_gei);??
????return?1;??
}??
??
Mat?GenerateGEI::FindContours(Mat?image)??
{??
????Mat?image_tmp=image.clone();?//用于findContours因為該函數使用后會導致原圖改變,所以要復制一個用于該函數??
#ifdef?_DEBUG??
????cv::imshow(“image“image);??
????cv::waitKey(-1);??
#endif??
????//每個輪廓的所有角點理論上只需要contours[0]??
std::vector>?contours;
contours.clear();
????cv::findContours(image_tmpcontoursCV_RETR_CCOMPCV_CHAIN_APPROX_NONE);?//findContours只能處理8UC1和32SC1?
//std::cout?<“Contours:?“?<????cv::Rect?r0?=?cv::boundingRect(cv::Mat(contours[0]));??
????cv::Mat?gait_img_roi?=?image(r0);??
????return?gait_img_roi;??
}??
??
Mat?GenerateGEI::Resize(Mat?image)??
{??
????float?ra?=?image.rows/image.cols;??
????cv::Mat?gait_roi_tmp;??
????Mat?gait_img2?=?Mat::zeros(HWCV_8UC1);??
????//if(ra>=base_ratio)??
????{??
????????double?resize_scale?=?(double)H/image.rows;??
????????cv::resize(imagegait_roi_tmpcv::Size()resize_scaleresize_scale);?//按比例縮放??
????????for(int?i?=0;i ????????{??
????????????uchar*?p_tmp?=?gait_roi_tmp.ptr(i);??
????????????uchar*?p?=?gait_img2.ptr(i);??
????????????for(int?j=(W-gait_roi_tmp.cols)/2k=0;k ????????????{??
????????????????p[j]?=?p_tmp[k];??
????????????}??
????????}??
????}??
????//else??
????//{??
????//??double?resize_scale?=?(double)W/image.cols;??
????//??cv::resize(imagegait_roi_tmpcv::Size()resize_scaleresize_scale);?//按比例縮放??
????//??int?i?=(H-gait_roi_tmp.rows)/2;??
????//??for(int?k?=?0;k ????//??{??
????//??????uchar*?p_tmp?=?gait_roi_tmp.ptr(k);??
????//??????uchar*?p?=?gait_img2.ptr(i);??
????//??????for(int?j=0;j ????//??????{??
????//??????????p[j]=p_tmp[j];??
????//??????}??
????//??}??
????//}??
????return?gait_img2;??
}??
??
Mat?GenerateGEI::CalGei(Mat?image)??
{??
????if(num==1)??
????{??
????????gei=image.clone();??
????}??
????else??
????{??
????????//新的圖像與原來的gei形成新的gei??
????????for(int?i=0;i ????????{??
????????????uchar*?p_old_gei=gei.ptr(i);??
????????????uchar*?p=image.ptr(i);??
????????????for(int?j=0;j ????????????{??
????????????????p_old_gei[j]=(p_old_gei[j]*(num-1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????92672??2015-09-29?22:15??testCreateGEI\Debug\testCreateGEI.exe
?????文件?????625596??2015-09-29?22:15??testCreateGEI\Debug\testCreateGEI.ilk
?????文件????1608704??2015-09-29?22:15??testCreateGEI\Debug\testCreateGEI.pdb
?????文件???????9076??2015-09-29?22:15??testCreateGEI\testCreateGEI\Debug\BuildLog.htm
?????文件?????323676??2015-09-29?22:15??testCreateGEI\testCreateGEI\Debug\GenerateGEI.obj
?????文件?????????67??2015-09-29?22:15??testCreateGEI\testCreateGEI\Debug\mt.dep
?????文件??????11945??2015-09-29?20:19??testCreateGEI\testCreateGEI\Debug\stdafx.obj
?????文件????????663??2015-09-29?20:19??testCreateGEI\testCreateGEI\Debug\testCreateGEI.exe.em
?????文件????????728??2015-09-29?20:19??testCreateGEI\testCreateGEI\Debug\testCreateGEI.exe.em
?????文件????????621??2015-09-29?22:15??testCreateGEI\testCreateGEI\Debug\testCreateGEI.exe.intermediate.manifest
?????文件?????119562??2015-09-29?22:14??testCreateGEI\testCreateGEI\Debug\testCreateGEI.obj
?????文件????3211264??2015-09-29?20:19??testCreateGEI\testCreateGEI\Debug\testCreateGEI.pch
?????文件?????543744??2015-09-29?22:15??testCreateGEI\testCreateGEI\Debug\vc90.idb
?????文件?????962560??2015-09-29?22:15??testCreateGEI\testCreateGEI\Debug\vc90.pdb
?????文件???????3157??2015-09-29?22:15??testCreateGEI\testCreateGEI\GenerateGEI.cpp
?????文件????????664??2015-09-29?17:08??testCreateGEI\testCreateGEI\GenerateGEI.h
?????文件???????1338??2015-09-23?20:43??testCreateGEI\testCreateGEI\ReadMe.txt
?????文件????????300??2015-09-23?20:43??testCreateGEI\testCreateGEI\stdafx.cpp
?????文件????????320??2015-09-23?20:43??testCreateGEI\testCreateGEI\stdafx.h
?????文件????????765??2015-09-23?20:43??testCreateGEI\testCreateGEI\targetver.h
?????文件???????3386??2015-09-29?22:13??testCreateGEI\testCreateGEI\testCreateGEI.cpp
?????文件???????4978??2015-09-29?22:03??testCreateGEI\testCreateGEI\testCreateGEI.vcproj
?????文件???????1409??2015-10-10?11:25??testCreateGEI\testCreateGEI\testCreateGEI.vcproj.LPJ-PC.LPJ.user
?????文件???15264768??2015-10-10?11:25??testCreateGEI\testCreateGEI.ncb
?????文件????????905??2015-09-23?20:43??testCreateGEI\testCreateGEI.sln
????..A..H.?????51712??2015-10-10?11:25??testCreateGEI\testCreateGEI.suo
?????目錄??????????0??2015-11-21?10:42??testCreateGEI\testCreateGEI\Debug
?????目錄??????????0??2015-11-21?10:42??testCreateGEI\Debug
?????目錄??????????0??2015-11-21?10:42??testCreateGEI\testCreateGEI
?????目錄??????????0??2015-11-21?10:42??testCreateGEI
............此處省略3個文件信息
- 上一篇:非線性濾波
- 下一篇:c++prime課后習題答案PDF版
評論
共有 條評論