Completed given DB_FILE in a "normal" walk.
Reimplemented from Impala::Core::VideoSet::Listener. Definition at line 52 of file ExportFeatures.h. References Impala::Core::VideoSet::Mpeg7Doc::AddFeature(), Impala::Core::Feature::FeatureDefinition::AsString(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get1(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get2(), Impala::Core::Feature::FeatureDefinition::GetName(), Impala::Core::VideoSet::Segmentation::GetNrFramesVideo(), ILOG_ERROR, Impala::MakeString(), mFeatureDef, mFractions, Impala::Core::VideoSet::Mpeg7DocWrite(), mSegmentation, mWalkType, Impala::QUID_CLASS_FRAME, Impala::QuidClass(), Impala::QuidId(), Impala::Core::Table::Read(), Impala::Core::Vector::VectorTem< ElemT >::Size(), and Impala::Core::Table::Table::Size(). 00053 { 00054 if ((mSegmentation == 0)) 00055 { 00056 ILOG_ERROR("Need segmentation"); 00057 return; 00058 } 00059 #ifndef REPOSITORY_USED // Here comes the deprecated stuff 00060 String fName = vs->GetFilePathFeatureData(mWalkType, mFeatureDef, 00061 fileId, false, -1, false, 00062 false); 00063 if (fName.empty()) 00064 { 00065 ILOG_ERROR("Unable to find " << mFeatureDef.AsString()); 00066 return; 00067 } 00068 Feature::FeatureTable table(mFeatureDef); 00069 Table::Read(&table, fName, vs->GetDatabase()); 00070 00071 String fileName = vs->GetFile(fileId); 00072 String id = fileName; 00073 int nrFrames = mSegmentation->GetNrFramesVideo(fileId); 00074 Mpeg7Doc mp7(id, fileName, nrFrames, mFractions, false, "", ""); 00075 for (int i=0 ; i<table.Size() ; i++) 00076 { 00077 Quid quid = table.Get1(i); 00078 if (QuidClass(quid) != QUID_CLASS_FRAME) 00079 ILOG_ERROR("Quid is not a frame"); 00080 int frameNr = QuidId(quid); 00081 String name = "frame_" + MakeString(frameNr); 00082 Feature::FeatureTable::VectorReal64 v = table.Get2(i); 00083 std::vector<double> vec; 00084 for (int j=0 ; j<v.Size() ; j++) 00085 vec.push_back(v[j]); 00086 mp7.AddFeature(mFeatureDef.GetName(), name, frameNr, frameNr, vec); 00087 } 00088 #else // REPOSITORY_USED 00089 Persistency::FeatureLocator loc(vs->GetLocator(), false, false, 00090 mWalkType, mFeatureDef.AsString(), 00091 vs->GetContainerFile(fileId)); 00092 typedef Feature::FeatureTable FeatureTable; 00093 FeatureTable* table = Persistency::FeatureTableRepository().Get(loc); 00094 if (table == 0) 00095 { 00096 ILOG_ERROR("Unable to find " << mFeatureDef.AsString()); 00097 return; 00098 } 00099 String fileName = vs->GetFile(fileId); 00100 String id = fileName; 00101 int nrFrames = mSegmentation->GetNrFramesVideo(fileId); 00102 Mpeg7Doc mp7(id, fileName, nrFrames, mFractions, false, "", ""); 00103 for (int i=0 ; i<table->Size() ; i++) 00104 { 00105 Quid quid = table->Get1(i); 00106 if (QuidClass(quid) != QUID_CLASS_FRAME) 00107 ILOG_ERROR("Quid is not a frame"); 00108 int frameNr = QuidId(quid); 00109 String name = "frame_" + MakeString(frameNr); 00110 Feature::FeatureTable::VectorReal64 v = table->Get2(i); 00111 std::vector<double> vec; 00112 for (int j=0 ; j<v.Size() ; j++) 00113 vec.push_back(v[j]); 00114 mp7.AddFeature(mFeatureDef.GetName(), name, frameNr, frameNr, vec); 00115 } 00116 delete table; 00117 #endif // REPOSITORY_USED 00118 Core::VideoSet::Mpeg7DocWrite(&mp7, vs, fileId); 00119 }
Here is the call graph for this function:
|