00001 /* 00002 * This file contains working unit derived from TSimpleUnit. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 #include <cstdio> 00010 00011 #include "DerivedUnit.h" 00012 00013 //////////////////////////////////////////////////////////////////////////////// 00014 //////////////////////////////////////////////////////////////////////////////// 00015 //////////////////////////////////////////////////////////////////////////////// 00016 // TTestUnit 00017 00018 /** Virtualni destruktor. 00019 */ 00020 TTestUnit::~TTestUnit(void) 00021 { 00022 } 00023 00024 /** Metoda pro zpracovani snimku. 00025 * 00026 * \param frame [in] nove prichozi snimek zaslany jednotkou TSimpleUnit. 00027 */ 00028 void TTestUnit::ProcessFrame( const TFrame * frame ) 00029 { 00030 //ukazkova uloha - vypocet prumerne hodnoty intenzity v monochromatickem obraze 00031 00032 //informace o snimku 00033 const DWORD f_id = frame->GetTimestamp().GetID(); 00034 const DWORD f_width = frame->GetImageSet()->GetGray()->GetWidth(); 00035 const DWORD f_height = frame->GetImageSet()->GetGray()->GetHeight(); 00036 00037 //data snimku v odstinech sedi 00038 const DWORD f_size = frame->GetImageSet()->GetGray()->GetDataSize(); 00039 const unsigned char * f_data = (unsigned char *)frame->GetImageSet()->GetGray()->GetData(); 00040 00041 //soucet intenzit 00042 int sum = 0; 00043 for ( DWORD i = 0 ; i < f_size ; i++ ) 00044 { 00045 sum += f_data[i]; 00046 } 00047 //vysledna intenzita 00048 sum /= f_size; 00049 00050 //ZAPIS VYSLEDKU 00051 //ziskame objekt pro ulozeni vysledku 00052 TUnitRetType_integer_implemented * res = this->GetObject(); 00053 00054 //nastaveni hodnoty vysledku do objektu pro ulozeni vysledku 00055 res->SetValue( sum ); 00056 00057 //ulozime vysledek pro tento snimek - je identifikovat jednoznacnym ID 00058 this->AddResult( frame->GetTimestamp().GetID(), res ); 00059 } 00060 00061 // TTestUnit 00062 //////////////////////////////////////////////////////////////////////////////// 00063 //////////////////////////////////////////////////////////////////////////////// 00064 ////////////////////////////////////////////////////////////////////////////////