读入ME txt
while (file3.ReadString(strValue2))
{
vecResult2.push_back(strValue2);
}
file3.Close();
for (int j = 0; j < vecResult2.size(); j++)
{
tempStr = CT2A(vecResult2.at(j).GetBuffer(0));//转string,使用string的rfind函数
poos = tempStr.rfind(":");//最后一次出现冒号的索引
time = vecResult2.at(j).Mid(poos - 5, 8);
//MessageBox(time);
/* ME_time.push_back(time);*/
s2 = CT2A(time.GetString());
string::iterator it;
for (it = s2.begin(); it != s2.end(); it++)//去掉截取的时间点的冒号
if (*it == ':')
{
s2.erase(it);
it--;
}
cstrTest = CA2T(s2.c_str());
tempNum = _ttoi(cstrTest);//时间化整
ME_time.push_back(tempNum);//入栈
}
读入HSI txt
fileHyper.Open(HyperTxtPath, CFile::modeRead);
while (fileHyper.ReadString(HyperStr))
{
vecHyper.push_back(HyperStr);
}
fileHyper.Close();
for (int c = 0; c < vecHyper.size(); c++)
{
tempStr = CT2A(vecHyper.at(c).GetBuffer(0));//转string,使用string的rfind函数
poos = tempStr.rfind(":");//最后一次出现冒号的索引
time = vecHyper.at(c).Mid(poos - 5, 8);
s2 = CT2A(time.GetString());
string::iterator it;
for (it = s2.begin(); it != s2.end(); it++)
if (*it == ':') {
s2.erase(it);
it--;
}
cstrTest = CA2T(s2.c_str());
tempNum = _ttoi(cstrTest);
//MessageBox(cstrTest);
//ME_time.push_back(time);
ME_time.push_back(tempNum);
}
把int型的容器从小到大排序
sort(ME_time.begin(), ME_time.end());
把时间合并之后进行筛选,删掉间隔小于4秒的
for (int jj = 0; jj < ME_time.size(); jj++)//把时间合并之后进行筛选,删掉间隔小于4秒的
{
if (jj < ME_time.size() - 1)
{
if (ME_time[jj + 1] - ME_time[jj] < 4)
{
tempNum = ME_time[jj + 1];
//ME_time[jj + 1]
//ME_time.pop_back(jj+1);
ME_time.erase(ME_time.begin() + jj + 1);
jj--;//重要
}
}
}
读相机保存的txt
fileCamera.Open(CameraTxtPath, CFile::modeRead);
while (fileCamera.ReadString(CameraStr))
{
vecCamera.push_back(CameraStr);
}
fileCamera.Close();
for (int j = 0; j < vecCamera.size(); j++)//取出CameraTest的时间化整
{
strCamera = CT2A(vecCamera.at(j).GetBuffer(0));//转string,使用string的rfind函数
dCamera = strCamera.rfind(":");//最后一次出现冒号的索引
tempCaamera = vecCamera.at(j).Mid(dCamera - 5, 8);
s2 = CT2A(tempCaamera.GetString());
string::iterator it;
for (it = s2.begin(); it != s2.end(); it++)
if (*it == ':')
{
s2.erase(it);
it--;
}
cstrTest = CA2T(s2.c_str());
// MessageBox(cstrTest);
tempNum = _ttoi(cstrTest);
vector<int>::iterator iter_c_Time;
iter_c_Time = find(c_Time.begin(), c_Time.end(), tempNum);
// if(c_Time.)
if (iter_c_Time != c_Time.end())
{
}
else //没找到
{
cCamera = strCamera.find(":");
temp_Camera = vecCamera.at(j).Mid(0, cCamera);
int timeNum = _ttoi(temp_Camera);
c_Time.push_back(tempNum);
c_Num.push_back(timeNum);
}
二分法在vevtor容器(相机时间及图片索引)
for (int ii = 0; ii < ME_time.size(); ii++)//二分法在vevtor容器(相机时间及图片索引)中
{
int start = 0, end = c_Time.size() - 1;
while (start <= end)
{
int mid = (start + end) / 2;
if (ME_time[ii] < c_Time[mid])
{
end = mid - 1;
//MessageBox(_T("ME_time[ii] < c_Time[mid]"));
}
else if (ME_time[ii] > c_Time[mid])
{
start = mid + 1;
//MessageBox(_T("ME_time[ii] > c_Time[mid]"));
}
else
{
R_Time.push_back(ME_time[ii]);
R_Index.push_back(c_Num[mid]);
break;//j结束while循环,进行下一次查找
}
}
}
把找到的时间及索引存入txt
file_Write.Open(WritePath, CFile::modeReadWrite);
for (int i = 0; i < R_Index.size(); i++)
{
timeCut.push_back(R_Index[i] - 440);
n1.Format(_T("%d"), i + 1);
n2.Format(_T("%d"), R_Time[i]);
n4 = n2.Mid(0, 2) + _T(":") + n2.Mid(2, 2) + _T(":") + n2.Mid(4, 2);
n3.Format(_T("%d"), R_Index[i]);
n5.Format(_T("%d"), R_Index[i] - 440);
file_Write.SeekToEnd();
file_Write.WriteString(n1 + _T("\t") + n4 + _T("\t") + n3 + _T("\t") + n5);
file_Write.WriteString(_T("\n"));
}
file_Write.Close();