Skip to content

Commit 5b08ee7

Browse files
fix: array2d<matrix> does not consider template row and columns
add: support ToString for Point fix: remove FHogArray2DMatrix
1 parent 3725146 commit 5b08ee7

File tree

14 files changed

+930
-698
lines changed

14 files changed

+930
-698
lines changed

src/DlibDotNet.Native/dlib/array2d/array2d.h

Lines changed: 681 additions & 313 deletions
Large diffs are not rendered by default.

src/DlibDotNet.Native/dlib/geometry/point.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ DLLEXPORT bool point_operator_equal(dlib::point* point, dlib::point* rhs)
7272
return *point == *rhs;
7373
}
7474

75+
DLLEXPORT void point_operator_left_shift(dlib::point* point, std::ostringstream* stream)
76+
{
77+
dlib::point& p = *point;
78+
*stream << p;
79+
}
80+
7581
#pragma endregion operator
7682

7783
#endif

src/DlibDotNet.Native/dlib/geometry/rectangle.h

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -200,53 +200,6 @@ DLLEXPORT int rectangle_get_rect(array2d_type img_type, void* img, rectangle** r
200200
return err;
201201
}
202202

203-
DLLEXPORT int rectangle_get_rect2(matrix_element_type type, void* img, rectangle** rect)
204-
{
205-
int err = ERR_OK;
206-
207-
switch(type)
208-
{
209-
case matrix_element_type::UInt8:
210-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<uint8_t>>*)img)));
211-
break;
212-
case matrix_element_type::UInt16:
213-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<uint16_t>>*)img)));
214-
break;
215-
case matrix_element_type::UInt32:
216-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<uint32_t>>*)img)));
217-
break;
218-
case matrix_element_type::Int8:
219-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<int8_t>>*)img)));
220-
break;
221-
case matrix_element_type::Int16:
222-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<int16_t>>*)img)));
223-
break;
224-
case matrix_element_type::Int32:
225-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<int32_t>>*)img)));
226-
break;
227-
case matrix_element_type::Float:
228-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<float>>*)img)));
229-
break;
230-
case matrix_element_type::Double:
231-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<double>>*)img)));
232-
break;
233-
case matrix_element_type::RgbPixel:
234-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<rgb_pixel>>*)img)));
235-
break;
236-
case matrix_element_type::HsiPixel:
237-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<hsi_pixel>>*)img)));
238-
break;
239-
case matrix_element_type::RgbAlphaPixel:
240-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<rgb_alpha_pixel>>*)img)));
241-
break;
242-
default:
243-
err = ERR_INPUT_ELEMENT_TYPE_NOT_SUPPORT;
244-
break;
245-
}
246-
247-
return err;
248-
}
249-
250203
DLLEXPORT rectangle* rectangle_translate_rect(rectangle* rect, point* p)
251204
{
252205
rectangle result = dlib::translate_rect(*rect, *p);

src/DlibDotNet.Native/dlib/image_transforms/fhog.h

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -345,114 +345,4 @@ DLLEXPORT int draw_fhog_object_detector_scan_fhog_pyramid(const pyramid_type pyr
345345

346346
#pragma endregion draw_fhog
347347

348-
#pragma region fhog_matrix
349-
350-
DLLEXPORT void* array2d_fhog_matrix_new(matrix_element_type type)
351-
{
352-
switch(type)
353-
{
354-
case matrix_element_type::Float:
355-
return new dlib::array2d<matrix<float, 31, 1>>();
356-
case matrix_element_type::Double:
357-
return new dlib::array2d<matrix<double, 31, 1>>();
358-
default:
359-
return nullptr;
360-
}
361-
}
362-
363-
DLLEXPORT void* array2d_fhog_matrix_new1(matrix_element_type type, int rows, int cols)
364-
{
365-
switch(type)
366-
{
367-
case matrix_element_type::Float:
368-
return new dlib::array2d<matrix<float, 31, 1>>(rows, cols);
369-
case matrix_element_type::Double:
370-
return new dlib::array2d<matrix<double, 31, 1>>(rows, cols);
371-
default:
372-
return nullptr;
373-
}
374-
}
375-
376-
DLLEXPORT bool array2d_fhog_matrix_nc(matrix_element_type type, void* array, int* ret)
377-
{
378-
switch(type)
379-
{
380-
case matrix_element_type::Float:
381-
*ret = ((dlib::array2d<matrix<float, 31, 1>>*)array)->nc();
382-
return true;
383-
case matrix_element_type::Double:
384-
*ret = ((dlib::array2d<matrix<double, 31, 1>>*)array)->nc();
385-
return true;
386-
default:
387-
return false;
388-
}
389-
}
390-
391-
DLLEXPORT bool array2d_fhog_matrix_nr(matrix_element_type type, void* array, int* ret)
392-
{
393-
switch(type)
394-
{
395-
case matrix_element_type::Float:
396-
*ret = ((dlib::array2d<matrix<float, 31, 1>>*)array)->nr();
397-
return true;
398-
case matrix_element_type::Double:
399-
*ret = ((dlib::array2d<matrix<double, 31, 1>>*)array)->nr();
400-
return true;
401-
default:
402-
return false;
403-
}
404-
}
405-
406-
DLLEXPORT bool array2d_fhog_matrix_size(matrix_element_type type, void* array, int* ret)
407-
{
408-
switch(type)
409-
{
410-
case matrix_element_type::Float:
411-
*ret = ((dlib::array2d<matrix<float, 31, 1>>*)array)->size();
412-
return true;
413-
case matrix_element_type::Double:
414-
*ret = ((dlib::array2d<matrix<double, 31, 1>>*)array)->size();
415-
return true;
416-
default:
417-
return false;
418-
}
419-
}
420-
421-
DLLEXPORT void array2d_fhog_matrix_delete(matrix_element_type type, void* array)
422-
{
423-
switch(type)
424-
{
425-
case matrix_element_type::Float:
426-
delete ((dlib::array2d<matrix<float, 31, 1>>*)array);
427-
break;
428-
case matrix_element_type::Double:
429-
delete ((dlib::array2d<matrix<double, 31, 1>>*)array);
430-
break;
431-
default:
432-
break;
433-
}
434-
}
435-
436-
DLLEXPORT int array2d_fhog_matrix_get_rect2(matrix_element_type type, void* img, rectangle** rect)
437-
{
438-
int err = ERR_OK;
439-
440-
switch(type)
441-
{
442-
case matrix_element_type::Float:
443-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<float, 31, 1>>*)img)));
444-
break;
445-
case matrix_element_type::Double:
446-
*rect = new dlib::rectangle(get_rect(*((array2d<matrix<double, 31, 1>>*)img)));
447-
break;
448-
default:
449-
err = ERR_INPUT_ELEMENT_TYPE_NOT_SUPPORT;
450-
break;
451-
}
452-
453-
return err;
454-
}
455-
456-
#pragma endregion fhog_matrix
457-
458348
#endif

src/DlibDotNet.Native/dlib/matrix/matrix.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ do {\
7979
{\
8080
*ret = ((dlib::matrix<ELEMENT, 1, 3>*)matrix)->nc();\
8181
}\
82+
else if (templateRows == 31 && templateColumns == 1)\
83+
{\
84+
*ret = ((dlib::matrix<ELEMENT, 31, 1>*)matrix)->nc();\
85+
}\
8286
} while (0)
8387

8488
#define matrix_nr_template(matrix, templateRows, templateColumns, ret) \
@@ -95,6 +99,10 @@ do {\
9599
{\
96100
*ret = ((dlib::matrix<ELEMENT, 1, 3>*)matrix)->nr();\
97101
}\
102+
else if (templateRows == 31 && templateColumns == 1)\
103+
{\
104+
*ret = ((dlib::matrix<ELEMENT, 31, 1>*)matrix)->nr();\
105+
}\
98106
} while (0)
99107

100108
#define matrix_size_template(matrix, templateRows, templateColumns, ret) \
@@ -111,6 +119,10 @@ do {\
111119
{\
112120
*ret = ((dlib::matrix<ELEMENT, 1, 3>*)matrix)->size();\
113121
}\
122+
else if (templateRows == 31 && templateColumns == 1)\
123+
{\
124+
*ret = ((dlib::matrix<ELEMENT, 31, 1>*)matrix)->size();\
125+
}\
114126
} while (0)
115127

116128
#define matrix_delete_template(matrix, templateRows, templateColumns) \
@@ -127,6 +139,10 @@ do {\
127139
{\
128140
delete ((dlib::matrix<ELEMENT, 1, 3>*)matrix);\
129141
}\
142+
else if (templateRows == 31 && templateColumns == 1)\
143+
{\
144+
delete ((dlib::matrix<ELEMENT, 31, 1>*)matrix);\
145+
}\
130146
} while (0)
131147

132148
#define matrix_operator_get_one_row_column_template(matrix, index, templateRows, templateColumns, ret) \
@@ -146,6 +162,11 @@ do {\
146162
dlib::matrix<ELEMENT, 1, 3>& tmp = *(static_cast<dlib::matrix<ELEMENT, 1, 3>*>(matrix));\
147163
*ret = tmp(index);\
148164
}\
165+
else if (templateRows == 31 && templateColumns == 1)\
166+
{\
167+
dlib::matrix<ELEMENT, 31, 1>& tmp = *(static_cast<dlib::matrix<ELEMENT, 31, 1>*>(matrix));\
168+
*ret = tmp(index);\
169+
}\
149170
} while (0)
150171

151172
#define matrix_operator_set_one_row_column_template(matrix, index, templateRows, templateColumns, value) \
@@ -165,6 +186,11 @@ do {\
165186
dlib::matrix<ELEMENT, 1, 3>& tmp = *(static_cast<dlib::matrix<ELEMENT, 1, 3>*>(matrix));\
166187
tmp(index) = value;\
167188
}\
189+
else if (templateRows == 31 && templateColumns == 1)\
190+
{\
191+
dlib::matrix<ELEMENT, 31, 1>& tmp = *(static_cast<dlib::matrix<ELEMENT, 31, 1>*>(matrix));\
192+
tmp(index) = value;\
193+
}\
168194
} while (0)
169195

170196
#define matrix_operator_get_row_column_template(matrix, row, column, templateRows, templateColumns, ret) \
@@ -184,6 +210,11 @@ do {\
184210
dlib::matrix<ELEMENT, 1, 3>& tmp = *(static_cast<dlib::matrix<ELEMENT, 1, 3>*>(matrix));\
185211
*ret = tmp(row, column);\
186212
}\
213+
else if (templateRows == 31 && templateColumns == 1)\
214+
{\
215+
dlib::matrix<ELEMENT, 31, 1>& tmp = *(static_cast<dlib::matrix<ELEMENT, 31, 1>*>(matrix));\
216+
*ret = tmp(row, column);\
217+
}\
187218
} while (0)
188219

189220
#define matrix_operator_set_row_column_template(matrix, row, column, templateRows, templateColumns, value) \
@@ -203,6 +234,11 @@ do {\
203234
dlib::matrix<ELEMENT, 1, 3>& tmp = *(static_cast<dlib::matrix<ELEMENT, 1, 3>*>(matrix));\
204235
tmp(row, column) = value;\
205236
}\
237+
else if (templateRows == 31 && templateColumns == 1)\
238+
{\
239+
dlib::matrix<ELEMENT, 31, 1>& tmp = *(static_cast<dlib::matrix<ELEMENT, 31, 1>*>(matrix));\
240+
tmp(row, column) = value;\
241+
}\
206242
} while (0)
207243

208244
#define matrix_operator_left_shift_template(matrix, templateRows, templateColumns, stream) \
@@ -222,6 +258,11 @@ do {\
222258
dlib::matrix<ELEMENT, 1, 3>& mat = *(static_cast<dlib::matrix<ELEMENT, 1, 3>*>(matrix));\
223259
*stream << mat;\
224260
}\
261+
else if (templateRows == 31 && templateColumns == 1)\
262+
{\
263+
dlib::matrix<ELEMENT, 31, 1>& mat = *(static_cast<dlib::matrix<ELEMENT, 31, 1>*>(matrix));\
264+
*stream << mat;\
265+
}\
225266
} while (0)
226267

227268
#pragma endregion template

src/DlibDotNet.Native/dlib/matrix/matrix_op/op_trans.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ do {\
2929
auto mat = static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 0, 1>>>*>(obj);\
3030
delete mat;\
3131
}\
32+
else if (templateRows == 31 && templateColumns == 1)\
33+
{\
34+
auto mat = static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 31, 1>>>*>(obj);\
35+
delete mat;\
36+
}\
3237
} while (0)
3338

3439
#define matrix_op_op_trans_nc_template(obj, templateRows, templateColumns, ret) \
@@ -43,6 +48,11 @@ do {\
4348
auto mat = static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 0, 1>>>*>(obj);\
4449
*ret = mat->nc();\
4550
}\
51+
else if (templateRows == 31 && templateColumns == 1)\
52+
{\
53+
auto mat = static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 31, 1>>>*>(obj);\
54+
*ret = mat->nc();\
55+
}\
4656
} while (0)
4757

4858
#define matrix_op_op_trans_nr_template(obj, templateRows, templateColumns, ret) \
@@ -57,6 +67,11 @@ do {\
5767
auto mat = static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 0, 1>>>*>(obj);\
5868
*ret = mat->nr();\
5969
}\
70+
else if (templateRows == 31 && templateColumns == 1)\
71+
{\
72+
auto mat = static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 31, 1>>>*>(obj);\
73+
*ret = mat->nr();\
74+
}\
6075
} while (0)
6176

6277
#define matrix_op_op_trans_operator_left_shift_template(obj, templateRows, templateColumns, stream) \
@@ -71,6 +86,11 @@ do {\
7186
matrix_op<op_trans<matrix<ELEMENT_IN, 0, 1>>>& mat = *(static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 0, 1>>>*>(obj));\
7287
*stream << mat;\
7388
}\
89+
else if (templateRows == 31 && templateColumns == 1)\
90+
{\
91+
matrix_op<op_trans<matrix<ELEMENT_IN, 31, 1>>>& mat = *(static_cast<matrix_op<op_trans<matrix<ELEMENT_IN, 31, 1>>>*>(obj));\
92+
*stream << mat;\
93+
}\
7494
} while (0)
7595

7696
#pragma endregion template

src/DlibDotNet.Native/dlib/matrix/matrix_utilities.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ do {\
3030
dlib::matrix<ELEMENT_IN, 0, 1>& mat = *static_cast<dlib::matrix<ELEMENT_IN, 0, 1>*>(matrix);\
3131
*ret = dlib::length(mat);\
3232
}\
33+
else if (templateRows == 31 && templateColumns == 1)\
34+
{\
35+
dlib::matrix<ELEMENT_IN, 31, 1>& mat = *static_cast<dlib::matrix<ELEMENT_IN, 31, 1>*>(matrix);\
36+
*ret = dlib::length(mat);\
37+
}\
3338
} while (0)
3439

3540
#define matrix_mean_op_std_vect_to_mat_template(type, matrix, templateRows, templateColumns, ret, err) \
@@ -204,6 +209,13 @@ do {\
204209
auto joinedMat = dlib::join_rows(mat1, mat2);\
205210
*ret = new matrix_op<op_join_rows<matrix<ELEMENT_IN, 0, 1>, matrix<ELEMENT_IN, 0, 1>>>(joinedMat);\
206211
}\
212+
else if (templateRows == 31 && templateColumns == 1)\
213+
{\
214+
dlib::matrix<ELEMENT_IN, 31, 1>& mat1 = *static_cast<dlib::matrix<ELEMENT_IN, 31, 1>*>(matrix1);\
215+
dlib::matrix<ELEMENT_IN, 31, 1>& mat2 = *static_cast<dlib::matrix<ELEMENT_IN, 31, 1>*>(matrix2);\
216+
auto joinedMat = dlib::join_rows(mat1, mat2);\
217+
*ret = new matrix_op<op_join_rows<matrix<ELEMENT_IN, 31, 1>, matrix<ELEMENT_IN, 31, 1>>>(joinedMat);\
218+
}\
207219
} while (0)
208220

209221
#define matrix_trans_template(matrix, templateRows, templateColumns, ret) \
@@ -220,6 +232,12 @@ do {\
220232
auto transedMat = dlib::trans(mat);\
221233
*ret = new matrix_op<op_trans<dlib::matrix<ELEMENT_IN, 0, 1>>>(transedMat);\
222234
}\
235+
else if (templateRows == 31 && templateColumns == 1)\
236+
{\
237+
dlib::matrix<ELEMENT_IN, 31, 1>& mat = *static_cast<dlib::matrix<ELEMENT_IN, 31, 1>*>(matrix);\
238+
auto transedMat = dlib::trans(mat);\
239+
*ret = new matrix_op<op_trans<dlib::matrix<ELEMENT_IN, 31, 1>>>(transedMat);\
240+
}\
223241
} while (0)
224242

225243
#pragma endregion template

0 commit comments

Comments
 (0)