1414namespace aliceVision {
1515namespace matchingImageCollection {
1616
17- bool loadPairs (std::istream& stream, PairSet& pairs, int rangeStart, int rangeSize, bool useSymmetry)
17+
18+ bool loadPairsFromFile (const std::string& sFileName , // filename of the list file,
19+ PairSet& pairs,
20+ bool useSymmetry)
1821{
22+ std::ifstream in (sFileName );
23+ if (!in.is_open ())
24+ {
25+ ALICEVISION_LOG_WARNING (" loadPairsFromFile: Impossible to read the specified file: \" " << sFileName << " \" ." );
26+ return false ;
27+ }
28+
1929 std::size_t nbLine = 0 ;
2030 std::string sValue ;
2131
22- for (; std::getline (stream , sValue ); ++nbLine)
32+ for (; std::getline (in , sValue ); ++nbLine)
2333 {
24- if (rangeStart != -1 && rangeSize != 0 )
25- {
26- if (nbLine < rangeStart)
27- continue ;
28- if (nbLine >= rangeStart + rangeSize)
29- break ;
30- }
31-
3234 std::vector<std::string> vec_str;
3335 boost::trim (sValue );
3436 boost::split (vec_str, sValue , boost::is_any_of (" \t " ), boost::token_compress_on);
3537
3638 const size_t str_size = vec_str.size ();
3739 if (str_size < 2 )
3840 {
39- ALICEVISION_LOG_WARNING (" loadPairs : Invalid input file." );
41+ ALICEVISION_LOG_WARNING (" loadPairsFromFile : Invalid input file." );
4042 return false ;
4143 }
44+
4245 std::stringstream oss;
4346 oss.clear ();
4447 oss.str (vec_str[0 ]);
4548 size_t I, J;
4649 oss >> I;
50+
4751 for (size_t i = 1 ; i < str_size; ++i)
4852 {
4953 oss.clear ();
@@ -61,26 +65,29 @@ bool loadPairs(std::istream& stream, PairSet& pairs, int rangeStart, int rangeSi
6165 pairToInsert = std::make_pair (I, J);
6266 }
6367
64- if (pairs.find (pairToInsert) != pairs.end ())
65- {
66- // There is no reason to have the same image pair twice in the list of image pairs
67- // to match.
68- ALICEVISION_LOG_WARNING (" loadPairs: image pair (" << I << " , " << J << " ) already added." );
69- }
70- ALICEVISION_LOG_TRACE (" loadPairs: image pair (" << I << " , " << J << " ) added." );
68+ ALICEVISION_LOG_TRACE (" loadPairsFromFile: image pair (" << I << " , " << J << " ) added." );
7169 pairs.insert (pairToInsert);
7270 }
7371 }
72+
7473 return true ;
7574}
7675
77- void savePairs ( std::ostream& stream , const PairSet& pairs)
76+ bool savePairsToFile ( const std::string& sFileName , const PairSet& pairs)
7877{
78+ std::ofstream outStream (sFileName );
79+ if (!outStream.is_open ())
80+ {
81+ ALICEVISION_LOG_WARNING (" savePairsToFile: Impossible to open the output specified file: \" " << sFileName << " \" ." );
82+ return false ;
83+ }
84+
7985 if (pairs.empty ())
8086 {
81- return ;
87+ return true ;
8288 }
83- stream << pairs.begin ()->first << " " << pairs.begin ()->second ;
89+
90+ outStream << pairs.begin ()->first << " " << pairs.begin ()->second ;
8491 IndexT previousIndex = pairs.begin ()->first ;
8592
8693 // Pairs is sorted so we will always receive elements with the same first pair ID in
@@ -89,48 +96,15 @@ void savePairs(std::ostream& stream, const PairSet& pairs)
8996 {
9097 if (it->first == previousIndex)
9198 {
92- stream << " " << it->second ;
99+ outStream << " " << it->second ;
93100 }
94101 else
95102 {
96- stream << " \n " << it->first << " " << it->second ;
103+ outStream << " \n " << it->first << " " << it->second ;
97104 previousIndex = it->first ;
98105 }
99106 }
100- stream << " \n " ;
101- }
102-
103- bool loadPairsFromFile (const std::string& sFileName , // filename of the list file,
104- PairSet& pairs,
105- int rangeStart,
106- int rangeSize,
107- bool useSymmetry)
108- {
109- std::ifstream in (sFileName );
110- if (!in.is_open ())
111- {
112- ALICEVISION_LOG_WARNING (" loadPairsFromFile: Impossible to read the specified file: \" " << sFileName << " \" ." );
113- return false ;
114- }
115-
116- if (!loadPairs (in, pairs, rangeStart, rangeSize, useSymmetry))
117- {
118- ALICEVISION_LOG_WARNING (" loadPairsFromFile: Failed to read file: \" " << sFileName << " \" ." );
119- return false ;
120- }
121- return true ;
122- }
123-
124- bool savePairsToFile (const std::string& sFileName , const PairSet& pairs)
125- {
126- std::ofstream outStream (sFileName );
127- if (!outStream.is_open ())
128- {
129- ALICEVISION_LOG_WARNING (" savePairsToFile: Impossible to open the output specified file: \" " << sFileName << " \" ." );
130- return false ;
131- }
132-
133- savePairs (outStream, pairs);
107+ outStream << " \n " ;
134108
135109 return !outStream.bad ();
136110}
0 commit comments