humanfeatures.cc

来自「VC视频对象的跟踪提取原代码(vc视频监控源码)」· CC 代码 · 共 187 行

CC
187
字号
/////////////////////////////////////////////////////////////////////////////////                                                                           ////  HumanFeatures.cc                                                         ////                                                                           ////  Some definitions and structures for human features such as head etc      ////                                                                           ////  Author    : Nils T Siebel (nts)                                          ////  Created   : Tue Apr 17 15:57:52 BST 2001                                 ////  Revision  : 0.1 of Thu Apr 19 12:20:49 BST 2001                          ////  Copyright : The University of Reading                                    ////                                                                           /////////////////////////////////////////////////////////////////////////////////#include "HumanFeatures.h"#include "RGB32Image.h"       // for zooming in video image#include "Grey8Image.h"       // for zooming in motion image#include "HumanFeatureTracker.h"namespace ReadingPeopleTracker{static const char *HumanFeatures_Revision = "@(#) HumanFeatures.cc, rev 0.1 of Thu Apr 19 12:20:49 BST 2001, Author Nils T Siebel, Copyright (c) 2001 The University of Reading";// definition and initialisation of static member variablesbool HumanFeatures::draw_head_search_area = true;bool HumanFeatures::draw_head_bbox = true;bool HumanFeatures::draw_head_centre = true;bool HumanFeatures::draw_shoulder_width = true;HeadInfo &HeadInfo::operator= (HeadInfo &original){    // copy over normal variables    x = original.x;    y = original.y;    x_abs = original.x_abs;    y_abs = original.y_abs;    width = original.width;    height = original.height;        // instantiate new VerticalHistogram in order to copy *original.head_histogram    head_histogram = new VerticalHistogram;    *head_histogram = *original.head_histogram;    return *this;}HumanFeatures &HumanFeatures::operator= (HumanFeatures &original){    Observation::operator=(original);    if (original.head != NULL)    {	// instantiate new HeadInfo in order to copy over *original.head	head = new HeadInfo;	*head = *original.head;  // using the operator defined above    }    else	head = NULL;        // (the other variables are static)    return *this;}// draw all detected HumanFeatures into imagevoid HumanFeatures::draw(){#ifndef NO_DISPLAY    draw_head();  // that's all we have for now...#endif   // #ifndef NO_DISPLAY}void HumanFeatures::draw_head(){#ifndef NO_DISPLAY    if (head == NULL)	return;        int zoom = Image::display_zoom->value;   // because recti and circ don't use zoom    VerticalHistogram *histogram = head->head_histogram;        linewidth(2);        if (draw_head_search_area)    {#ifdef USE_GL	// bbox of search area	if (getplanes() == 8)   // CMap (grey?) image  (fi motion image)	    color(30);	else	    if (getplanes() == 24)      // RGB mode  (fi video image)		RGBcolor(127,32,32);#endif	recti(zoom*(histogram->xlo),	      zoom*(histogram->ylo),	      zoom*(histogram->xhi),	      zoom*(histogram->yhi));    }        if (draw_head_bbox)    {#ifdef USE_GL	// head bbox	if (getplanes() == 8)   // CMap (grey?) image  (fi motion image)	    color(50);	else	    if (getplanes() == 24)      // RGB mode  (fi video image)		RGBcolor(255,10,127);#endif		recti(zoom*(head->x_abs - head->width / 2),	      zoom*(head->y_abs - head->height / 2),	      zoom*(head->x_abs + head->width / 2),	      zoom*(head->y_abs + head->height / 2));    }        if (draw_head_centre)    {#ifdef USE_GL	// head centre: mark with a circle	if (getplanes() == 8)   // CMap (grey?) image  (fi motion image)	    color(50);	else	    if (getplanes() == 24)      // RGB mode  (fi video image)		RGBcolor(255,10,127);#endif	circ(zoom*(head->x_abs),	     zoom*(head->y_abs), zoom + 1);    }        if (draw_shoulder_width)    {#ifdef USE_GL	// assumed shoulder width (from head search histogram)	if (getplanes() == 8)   // CMap (grey?) image  (fi motion image)	    color(50);	else	    if (getplanes() == 24)      // RGB mode  (fi video image)		RGBcolor(255,10,127);#endif	move2i(zoom*(histogram->xlo + histogram->leftmost),	       zoom*(histogram->ylo + head->y - head->height / 2 - 1));	draw2i(zoom*(histogram->xlo + histogram->leftmost),	       zoom*(histogram->ylo + 1));		move2i(zoom*(histogram->xlo + histogram->rightmost),	       zoom*(histogram->ylo + head->y - head->height / 2 - 1));	draw2i(zoom*(histogram->xlo + histogram->rightmost),	       zoom*(histogram->ylo + 1));    }	#endif   // #ifndef NO_DISPLAY}// write out HeadInfo structureostream &operator << (ostream &target, const HeadInfo head){    target << "Head Info: head at (" << head.x << "," << head.y << ") relative, ("	   << head.head_histogram->xlo + head.x << ","	   << head.head_histogram->ylo+head.y << ") absolute, size "	   << head.width << "x" << head.height << " pixels " << endl;    return target;}ostream &operator << (ostream &target, const HumanFeatures features){    target << "Features: " << features.head;        // more features to be written out here...    // target << "Features: " << features.body;  \ETC    return target;}// FIXME: Dummy istream operator.  we need it for listimplement(HumanFeatures)//        but until we actually use it I will leave it empty --- nts Apr 2001.istream &operator >> (istream &source, const HumanFeatures features){    return source;};} // namespace ReadingPeopleTracker

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?