111 lines
2.0 KiB
C++
111 lines
2.0 KiB
C++
// Copyright (C) 2014 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#ifndef DLIB_MATRIX_GENERIC_iMAGE_Hh_
|
|
#define DLIB_MATRIX_GENERIC_iMAGE_Hh_
|
|
|
|
#include "matrix.h"
|
|
#include "../image_processing/generic_image.h"
|
|
|
|
namespace dlib
|
|
{
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
struct image_traits<matrix<T,NR,NC,MM> >
|
|
{
|
|
typedef T pixel_type;
|
|
};
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
struct image_traits<const matrix<T,NR,NC,MM> >
|
|
{
|
|
typedef T pixel_type;
|
|
};
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
inline long num_rows( const matrix<T,NR,NC,MM>& img) { return img.nr(); }
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
inline long num_columns( const matrix<T,NR,NC,MM>& img) { return img.nc(); }
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
inline void set_image_size(
|
|
matrix<T,NR,NC,MM>& img,
|
|
long rows,
|
|
long cols
|
|
) { img.set_size(rows,cols); }
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
inline void* image_data(
|
|
matrix<T,NR,NC,MM>& img
|
|
)
|
|
{
|
|
if (img.size() != 0)
|
|
return &img(0,0);
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
inline const void* image_data(
|
|
const matrix<T,NR,NC,MM>& img
|
|
)
|
|
{
|
|
if (img.size() != 0)
|
|
return &img(0,0);
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
template <
|
|
typename T,
|
|
long NR,
|
|
long NC,
|
|
typename MM
|
|
>
|
|
inline long width_step(
|
|
const matrix<T,NR,NC,MM>& img
|
|
)
|
|
{
|
|
return img.nc()*sizeof(T);
|
|
}
|
|
|
|
}
|
|
|
|
#endif // DLIB_MATRIX_GENERIC_iMAGE_Hh_
|
|
|
|
|