统计输出结果,每十帧出现次数最多的那个
首先,建立一个list用于存放每十帧输出结果。
#define MAX_LIST_NUM 10
list<int> plist; //存放队列
判断是否已经存放了十帧,没有的话接着往里存放,已经有十帧的话,将第一帧推出,现帧存放进去,这里n表示要存放的结果
if (plist.size() < MAX_LIST_NUM)
{
plist.push_back(n);
}
else if (plist.size() == MAX_LIST_NUM)
{
plist.pop_front();
plist.push_back(n);
}
判断十帧中出现频率最多的那个数字
list<int>::iterator ppst;
int maxNum = 0;
if (plist.size() == MAX_NUM_PERSON_LIST_NUM)
{
vector<IntScore> mNumVec;
mNumVec.clear();
IntScore tempNum;
//tempNum = plist.begin();
for (ppst=plist.begin();ppst!=plist.end();ppst ++)
{
tempNum.score = 0;
tempNum.str = *ppst;
int findFlag = 0;
for (int nNumVecIndex = 0; Index < mNumVec.size();Index ++)
{
if (tempNum.str == mNumVec[Index].str )
{
mNumVec[Index].score ++;
findFlag = 1;
break;
}
}
if (findFlag == 0)
{
tempNum.score = 1;
mNumVec.push_back(tempNum);
}
}
int maxscore = 0;
int maxscoreIndex;
int maxNumPerson = 0;
for (int Index = 0; Index < mNumVec.size(); Index ++)
{
if (mNumVec[Index].score > maxscore)
{
maxscore = mNumVec[Index].score;
maxscoreIndex = Index;
maxNumPerson = mNumVec[Index].str;
}
}
if (maxscore < 1)
{
return 0;
}