EstervQrCode 2.0.0
Library for qr code manipulation
Loading...
Searching...
No Matches
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
41namespace cvflann
42{
43
48template <typename T>
49class Matrix
50{
51public:
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
90class UntypedMatrix
91{
92public:
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