Hog Camshift的人體跟蹤

2021-06-14 06:56:46 字數 2871 閱讀 7020

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include "cvaux.h"

#include

#include

#include

#include

using namespace cv;

using namespace std;

rect r ;

int track_object = 0;

rect objectdectd(iplimage* frame,int object,rect r);

iplimage* meansift(iplimage *frame,rect r);

int main()

cvnamedwindow( "hogsiftdemo", 1 );

for(;;)

else frame = meansift(frame,r);

//cvrectangle(frame, r.tl(), r.br(), cv::scalar(0,255,0), 3);

cvshowimage("hogsiftdemo", frame);

waitkey(1);

}cvreleasecapture( &capture );

cvdestroywindow("hogsiftdemo");

return 0;

}rect objectdectd(iplimage* frame,int object,rect r)

for( i = 0; i < found_filtered.size(); i++ )

}return r;

}iplimage *image = 0, *hsv = 0, *hue = 0, *mask = 0, *backproject = 0, *histimg = 0;

cvhistogram *hist = 0;

int backproject_mode = 0;

int select_object = 0;

//int track_object = 0;

int show_hist = 1;

cvpoint origin;

cvrect selection;

cvrect track_window;

cvbox2d track_box;

cvconnectedcomp track_comp;

int hdims = 16;

float hranges_arr = ;

float* hranges = hranges_arr;

int vmin = 10, vmax = 256, smin = 30;

int i, bin_w, c;

cvscalar hsv2rgb( float hue )

, , , , , };

hue *= 0.033333333333333333333333333333333f;

sector = cvfloor(hue);

p = cvround(255*(hue - sector));

p ^= sector & 1 ? 255 : 0;

rgb[sector_data[sector][0]] = 255;

rgb[sector_data[sector][1]] = 0;

rgb[sector_data[sector][2]] = p;

return cvscalar(rgb[2], rgb[1], rgb[0],0);

}iplimage* meansift(iplimage *frame,rect r)

cvcopy( frame, image, 0 );

cvcvtcolor( image, hsv, cv_bgr2hsv );

if( track_object )

cvcalcbackproject( &hue, backproject, hist );

cvand( backproject, mask, backproject, 0 );

cvcamshift( backproject, track_window,

cvtermcriteria( cv_termcrit_eps | cv_termcrit_iter, 10, 1 ),

&track_comp, &track_box );

track_window = track_comp.rect;

if( backproject_mode )

cvcvtcolor( backproject, image, cv_gray2bgr );

if( !image->origin )

track_box.angle = -track_box.angle;

//cvellipsebox( image, track_box, cv_rgb(255,0,0), 3, cv_aa, 0 );

rect r;

r.x = track_comp.rect.x;

r.width = track_comp.rect.height;

r.y = track_comp.rect.y;

r.height = track_comp.rect.width;

cvrectangle(image, r.tl(), r.br(), cv::scalar(0,255,0), 3);

}if( select_object && selection.width > 0 && selection.height > 0 )

return image;

}

基於51控制的人體感應燈

6 程式設計 7 成品模型展示 總結首先我先說說為什麼要做這個東西,這個是由於前幾天乙個朋友突然找我說要交乙個作業但又不知道要做什麼,我聽了作業要求後要求後給出的解決方法,做乙個人體感應燈,並答應她幫她做。為什麼要做這個燈呢?由於現在大部分樓道燈仍採用聲光控制,這就導致晚上時你必須弄出點聲響才可以點...

基於三個kinect的人體建模

單個 kinect 的人體重建,在 kinect sdk 1.8 中,kinect fusion 的效果已經很不錯了。其缺點顯而易見,一是掃瞄時間長,重建物件也需要長時間保持靜態 二是需要人體或者 kinect 轉動以實現全方位掃瞄,操作起來繁瑣。而運用三個 kinect 來進行人體重建,只需要將三...

基於MEMS感測器的人體運動捕捉服

人體運動捕捉技術廣泛應用在動作分析 醫學 生物工程 電影特效 體育科研訓練等相關領域.目前研究人員主要採用光學和感測器2種方式,光學式運動捕捉儀需要特定的空間環境,多台高速攝像機,其裝置昂貴且測定距離有限.感測器式運動捕捉儀相比之下測定距離遠,對空間沒有特定要求,易佩戴且成本低廉,便於在實際中使用....