資源簡(jiǎn)介
軌跡提取,用于視頻事件檢測(cè)等,非常好用!
代碼片段和文件信息
#include?“DenseTrack.h“
#include?“Descriptors.h“
#include?“Initialize.h“
IplImageWrapper?image?prev_image?grey?prev_grey;
IplImagePyramid?grey_pyramid?prev_grey_pyramid?eig_pyramid;
CvCapture*?capture?=?0;
float*?fscales?=?0;?//?float?scale?values
int?show_track?=?0;?//?set?show_track?=?1?if?you?want?to?visualize?the?trajectories
int?main(?int?argc?char**?argv?)
{
int?frameNum?=?0;
TrackerInfo?tracker;
DescInfo?hogInfo;
DescInfo?hofInfo;
DescInfo?mbhInfo;
char*?video?=?argv[1];
arg_parse(argc?argv);
// std::cerr?<“start_frame:?“?<ame?<“?end_frame:?“?<ame?<“?track_length:?“?<// std::cerr?<“min_distance:?“?<
InitTrackerInfo(&tracker?track_length?init_gap);
InitDescInfo(&hogInfo?8?0?1?patch_size?nxy_cell?nt_cell);
InitDescInfo(&hofInfo?9?1?1?patch_size?nxy_cell?nt_cell);
InitDescInfo(&mbhInfo?8?0?1?patch_size?nxy_cell?nt_cell);
capture?=?cvCreateFileCapture(video);
if(?!capture?)?{?
printf(?“Could?not?initialize?capturing..\n“?);
return?-1;
}
if(?show_track?==?1?)
cvNamedWindow(?“DenseTrack“?0?);
std::vector?>?xyScaleTracks;
int?init_counter?=?0;?//?indicate?when?to?detect?new?feature?points
while(?true?)?{
IplImage*?frame?=?0;
int?i?j?c;
//?get?a?new?frame
frame?=?cvQueryframe(?capture?);
if(?!frame?)?{
//printf(“break“);
break;
}
if(?frameNum?>=?start_frame?&&?frameNum?<=?end_frame?)?{
if(?!image?)?{
//?initailize?all?the?buffers
image?=?IplImageWrapper(?cvGetSize(frame)?8?3?);
image->origin?=?frame->origin;
prev_image=?IplImageWrapper(?cvGetSize(frame)?8?3?);
prev_image->origin?=?frame->origin;
grey?=?IplImageWrapper(?cvGetSize(frame)?8?1?);
grey_pyramid?=?IplImagePyramid(?cvGetSize(frame)?8?1?scale_stride?);
prev_grey?=?IplImageWrapper(?cvGetSize(frame)?8?1?);
prev_grey_pyramid?=?IplImagePyramid(?cvGetSize(frame)?8?1?scale_stride?);
eig_pyramid?=?IplImagePyramid(?cvGetSize(frame)?32?1?scale_stride?);
cvCopy(?frame?image?0?);
cvCvtColor(?image?grey?CV_BGR2GRAY?);
grey_pyramid.rebuild(?grey?);
//?how?many?scale?we?can?have
scale_num?=?std::min(scale_num?grey_pyramid.numOfLevels());
fscales?=?(float*)cvAlloc(scale_num*sizeof(float));
xyScaleTracks.resize(scale_num);
for(?int?ixyScale?=?0;?ixyScale? std::list
評(píng)論
共有 條評(píng)論