Fix DMatch and Keypoint I/O in FileStorage
This commit is contained in:
@@ -944,6 +944,27 @@ void write(FileStorage& fs, const Scalar_<_Tp>& s )
|
||||
write(fs, s.val[3]);
|
||||
}
|
||||
|
||||
static inline
|
||||
void write(FileStorage& fs, const KeyPoint& kpt )
|
||||
{
|
||||
write(fs, kpt.pt.x);
|
||||
write(fs, kpt.pt.y);
|
||||
write(fs, kpt.size);
|
||||
write(fs, kpt.angle);
|
||||
write(fs, kpt.response);
|
||||
write(fs, kpt.octave);
|
||||
write(fs, kpt.class_id);
|
||||
}
|
||||
|
||||
static inline
|
||||
void write(FileStorage& fs, const DMatch& m )
|
||||
{
|
||||
write(fs, m.queryIdx);
|
||||
write(fs, m.trainIdx);
|
||||
write(fs, m.imgIdx);
|
||||
write(fs, m.distance);
|
||||
}
|
||||
|
||||
static inline
|
||||
void write(FileStorage& fs, const Range& r )
|
||||
{
|
||||
@@ -951,6 +972,26 @@ void write(FileStorage& fs, const Range& r )
|
||||
write(fs, r.end);
|
||||
}
|
||||
|
||||
static inline
|
||||
void write( FileStorage& fs, const std::vector<KeyPoint>& vec )
|
||||
{
|
||||
size_t npoints = vec.size();
|
||||
for(size_t i = 0; i < npoints; i++ )
|
||||
{
|
||||
write(fs, vec[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static inline
|
||||
void write( FileStorage& fs, const std::vector<DMatch>& vec )
|
||||
{
|
||||
size_t npoints = vec.size();
|
||||
for(size_t i = 0; i < npoints; i++ )
|
||||
{
|
||||
write(fs, vec[i]);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename _Tp> static inline
|
||||
void write( FileStorage& fs, const std::vector<_Tp>& vec )
|
||||
{
|
||||
@@ -1096,6 +1137,24 @@ void read( const FileNode& node, std::vector<_Tp>& vec, const std::vector<_Tp>&
|
||||
}
|
||||
}
|
||||
|
||||
static inline
|
||||
void read( const FileNode& node, std::vector<KeyPoint>& vec, const std::vector<KeyPoint>& default_value )
|
||||
{
|
||||
if(!node.node)
|
||||
vec = default_value;
|
||||
else
|
||||
read(node, vec);
|
||||
}
|
||||
|
||||
static inline
|
||||
void read( const FileNode& node, std::vector<DMatch>& vec, const std::vector<DMatch>& default_value )
|
||||
{
|
||||
if(!node.node)
|
||||
vec = default_value;
|
||||
else
|
||||
read(node, vec);
|
||||
}
|
||||
|
||||
//! @} FileNode
|
||||
|
||||
//! @relates cv::FileStorage
|
||||
|
||||
Reference in New Issue
Block a user