bool AStar::judgeSurround(const ASCOORD& coord,const ASCOORD& parentCoord,int G) { if(!isInList(m_closeList,coord) && !m_mark.isMask(coord._y,coord._x)) { StepData* pSD = findFromList(m_openList,coord); if (pSD && pSD->_g > G) { pSD->_g = G; pSD->_parentCoord = parentCoord; } else if(!pSD) { StepData newSD(coord); newSD._g = G; newSD._h = computeH(coord); newSD._parentCoord = parentCoord; m_openList.push_back(newSD); if(newSD._coord == m_start) return true; } } return false; }
bool AStar::GetRoute(std::vector<ASCOORD>* list) { list->clear(); StepData* sd = findFromList(m_openList,m_start); int size = m_openList.size(); if(sd!=NULL) { list->push_back(sd->_coord); sd = findFromList(m_closeList,sd->_parentCoord); while(sd->_coord!=m_target) { list->push_back(sd->_coord); sd = findFromList(m_closeList,sd->_parentCoord); } list->push_back(sd->_coord); return true; } return false; }
void DataSetVOC::loadBox(const FileNode &fn, vector<Vec4i> &boxes, vecI &clsIdx){ string isDifficult; fn["difficult"]>>isDifficult; if (isDifficult == "1") return; string strXmin, strYmin, strXmax, strYmax; fn["bndbox"]["xmin"] >> strXmin; fn["bndbox"]["ymin"] >> strYmin; fn["bndbox"]["xmax"] >> strXmax; fn["bndbox"]["ymax"] >> strYmax; boxes.push_back(Vec4i(atoi(_S(strXmin)), atoi(_S(strYmin)), atoi(_S(strXmax)), atoi(_S(strYmax)))); string clsName; fn["name"]>>clsName; clsIdx.push_back(findFromList(clsName, classNames)); CV_Assert_(clsIdx[clsIdx.size() - 1] >= 0, ("Invalidate class name\n")); }