EstervQrCode 1.1.1
Library for qr code manipulation
matrix.h
1 /***********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
5  * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
6  *
7  * THE BSD LICENSE
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *************************************************************************/
30 
31 #ifndef OPENCV_FLANN_DATASET_H_
32 #define OPENCV_FLANN_DATASET_H_
33 
35 
36 #include <stdio.h>
37 
38 #include "opencv2/core/cvdef.h"
39 #include "opencv2/flann/defines.h"
40 
41 namespace cvflann
42 {
43 
48 template <typename T>
49 class Matrix
50 {
51 public:
52  typedef T type;
53 
54  size_t rows;
55  size_t cols;
56  size_t stride;
57  T* data;
58 
59  Matrix() : rows(0), cols(0), stride(0), data(NULL)
60  {
61  }
62 
63  Matrix(T* data_, size_t rows_, size_t cols_, size_t stride_ = 0) :
64  rows(rows_), cols(cols_), stride(stride_), data(data_)
65  {
66  if (stride==0) stride = cols;
67  }
68 
72  CV_DEPRECATED void free()
73  {
74  fprintf(stderr, "The cvflann::Matrix<T>::free() method is deprecated "
75  "and it does not do any memory deallocation any more. You are"
76  "responsible for deallocating the matrix memory (by doing"
77  "'delete[] matrix.data' for example)");
78  }
79 
83  T* operator[](size_t index) const
84  {
85  return data+index*stride;
86  }
87 };
88 
89 
90 class UntypedMatrix
91 {
92 public:
93  size_t rows;
94  size_t cols;
95  void* data;
96  flann_datatype_t type;
97 
98  UntypedMatrix(void* data_, long rows_, long cols_) :
99  rows(rows_), cols(cols_), data(data_)
100  {
101  }
102 
103  ~UntypedMatrix()
104  {
105  }
106 
107 
108  template<typename T>
109  Matrix<T> as()
110  {
111  return Matrix<T>((T*)data, rows, cols);
112  }
113 };
114 
115 
116 
117 }
118 
120 
121 #endif //OPENCV_FLANN_DATASET_H_
T fprintf(T... args)
T free(T... args)
InputArrayOfArrays InputArrayOfArrays InputOutputArray InputOutputArray InputOutputArray InputOutputArray Size InputOutputArray InputOutputArray T
Definition: calib3d.hpp:1867
int rows
Definition: core_c.h:257
int cols
Definition: core_c.h:221
int index
Definition: core_c.h:634
int int type
Definition: core_c.h:221
void * data
Definition: core_c.h:427
#define CV_DEPRECATED
Definition: cvdef.h:450
Definition: flann.hpp:60