OXIESEC PANEL
- Current Dir:
/
/
usr
/
include
/
opencv2
/
flann
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/28/2024 06:50:42 AM
rwxr-xr-x
📄
all_indices.h
5.82 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
allocator.h
5.92 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
any.h
8.06 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
autotuned_index.h
20.36 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
composite_index.h
5.85 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
config.h
1.75 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
defines.h
4.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
dist.h
26.9 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
dummy.h
251 bytes
05/12/2017 03:45:27 AM
rw-r--r--
📄
dynamic_bitset.h
4.45 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
flann.hpp
2.31 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
flann_base.hpp
8.65 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
general.h
1.99 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
ground_truth.h
3.23 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
hdf5.h
7.13 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
heap.h
4.01 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
hierarchical_clustering_index.h
25.42 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
index_testing.h
10.56 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
kdtree_index.h
19.22 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
kdtree_single_index.h
19.7 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
kmeans_index.h
36.05 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
linear_index.h
3.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
logger.h
3.63 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
lsh_index.h
15.19 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
lsh_table.h
17.51 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
matrix.h
3.21 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
miniflann.hpp
5.75 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
nn_index.h
5.91 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
object_factory.h
2.83 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
params.h
3.2 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
random.h
3.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
result_set.h
14.64 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
sampling.h
2.78 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
saving.h
5.64 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
simplex_downhill.h
5.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
timer.h
2.47 KB
05/12/2017 03:45:27 AM
rw-r--r--
Editing: saving.h
Close
/*********************************************************************** * Software License Agreement (BSD License) * * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE NNIndexGOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *************************************************************************/ #ifndef OPENCV_FLANN_SAVING_H_ #define OPENCV_FLANN_SAVING_H_ #include <cstring> #include <vector> #include "general.h" #include "nn_index.h" #ifdef FLANN_SIGNATURE_ #undef FLANN_SIGNATURE_ #endif #define FLANN_SIGNATURE_ "FLANN_INDEX" namespace cvflann { template <typename T> struct Datatype {}; template<> struct Datatype<char> { static flann_datatype_t type() { return FLANN_INT8; } }; template<> struct Datatype<short> { static flann_datatype_t type() { return FLANN_INT16; } }; template<> struct Datatype<int> { static flann_datatype_t type() { return FLANN_INT32; } }; template<> struct Datatype<unsigned char> { static flann_datatype_t type() { return FLANN_UINT8; } }; template<> struct Datatype<unsigned short> { static flann_datatype_t type() { return FLANN_UINT16; } }; template<> struct Datatype<unsigned int> { static flann_datatype_t type() { return FLANN_UINT32; } }; template<> struct Datatype<float> { static flann_datatype_t type() { return FLANN_FLOAT32; } }; template<> struct Datatype<double> { static flann_datatype_t type() { return FLANN_FLOAT64; } }; /** * Structure representing the index header. */ struct IndexHeader { char signature[16]; char version[16]; flann_datatype_t data_type; flann_algorithm_t index_type; size_t rows; size_t cols; }; /** * Saves index header to stream * * @param stream - Stream to save to * @param index - The index to save */ template<typename Distance> void save_header(FILE* stream, const NNIndex<Distance>& index) { IndexHeader header; memset(header.signature, 0, sizeof(header.signature)); strcpy(header.signature, FLANN_SIGNATURE_); memset(header.version, 0, sizeof(header.version)); strcpy(header.version, FLANN_VERSION_); header.data_type = Datatype<typename Distance::ElementType>::type(); header.index_type = index.getType(); header.rows = index.size(); header.cols = index.veclen(); std::fwrite(&header, sizeof(header),1,stream); } /** * * @param stream - Stream to load from * @return Index header */ inline IndexHeader load_header(FILE* stream) { IndexHeader header; size_t read_size = fread(&header,sizeof(header),1,stream); if (read_size!=(size_t)1) { throw FLANNException("Invalid index file, cannot read"); } if (strcmp(header.signature,FLANN_SIGNATURE_)!=0) { throw FLANNException("Invalid index file, wrong signature"); } return header; } template<typename T> void save_value(FILE* stream, const T& value, size_t count = 1) { fwrite(&value, sizeof(value),count, stream); } template<typename T> void save_value(FILE* stream, const cvflann::Matrix<T>& value) { fwrite(&value, sizeof(value),1, stream); fwrite(value.data, sizeof(T),value.rows*value.cols, stream); } template<typename T> void save_value(FILE* stream, const std::vector<T>& value) { size_t size = value.size(); fwrite(&size, sizeof(size_t), 1, stream); fwrite(&value[0], sizeof(T), size, stream); } template<typename T> void load_value(FILE* stream, T& value, size_t count = 1) { size_t read_cnt = fread(&value, sizeof(value), count, stream); if (read_cnt != count) { throw FLANNException("Cannot read from file"); } } template<typename T> void load_value(FILE* stream, cvflann::Matrix<T>& value) { size_t read_cnt = fread(&value, sizeof(value), 1, stream); if (read_cnt != 1) { throw FLANNException("Cannot read from file"); } value.data = new T[value.rows*value.cols]; read_cnt = fread(value.data, sizeof(T), value.rows*value.cols, stream); if (read_cnt != (size_t)(value.rows*value.cols)) { throw FLANNException("Cannot read from file"); } } template<typename T> void load_value(FILE* stream, std::vector<T>& value) { size_t size; size_t read_cnt = fread(&size, sizeof(size_t), 1, stream); if (read_cnt!=1) { throw FLANNException("Cannot read from file"); } value.resize(size); read_cnt = fread(&value[0], sizeof(T), size, stream); if (read_cnt != size) { throw FLANNException("Cannot read from file"); } } } #endif /* OPENCV_FLANN_SAVING_H_ */