CVD 0.8
Classes | Public Types | Public Member Functions
CVD::Image< T > Class Template Reference

A full image which manages its own data. More...

#include <image.h>

Inheritance diagram for CVD::Image< T >:
CVD::BasicImage< T > CVD::SubImage< T >

List of all members.

Classes

struct  CopyPlaceHolder

Public Types

typedef T value_type

Public Member Functions

 Image (const Image &copy)
 Image (const CopyPlaceHolder &c)
CopyPlaceHolder copy_from_me () const
void copy_from (const BasicImage< T > &copy)
void copy_from (const SubImage< T > &copy)
void make_unique ()
const Imageoperator= (const Image &copyof)
 Image ()
 Image (const ImageRef &size)
 Image (const ImageRef &size, const T &val)
 Image (const std::pair< ImageRef, T > &p)
void resize (const ImageRef &size)
void resize (const ImageRef &size, const T &val)
 ~Image ()

Detailed Description

template<class T>
class CVD::Image< T >

A full image which manages its own data.

Parameters:
TThe pixel type for this image. Typically either CVD::byte or CVD::Rgb<CVD::byte> > are used, but images could be constructed of any available type.

Images do reference counting on the data, so multiple images can point to one block of data. This means that copying an image is like copying a pointer (so use the same care); to further the analogy, operator[]() dereferences images. Copy constructing is quite fast (a 16-byte copy and an increment), so images can be efficiently passed back in functions or used in containers like std::vector

Image<> inherits all debugging macros from BasicImage and SubImage. In addition, the macro CVD_IMAGE_DEBUG_INITIALIZE_RANDOM will cause allocated memory to be initialized with random numbers before any constructors are called.

Loading and saving, format conversion and some copying functionality is provided by external functions rather than as part of this class. See the Image loading and saving, and format conversion module for documentation of these functions.

Definition at line 633 of file image.h.


Constructor & Destructor Documentation

template<class T>
CVD::Image< T >::Image ( const Image< T > &  copy) [inline]

Copy constructor.

This does not copy the data, it just creates a new reference to the image data

Parameters:
copyThe image to copy

Definition at line 649 of file image.h.

template<class T>
CVD::Image< T >::Image ( const CopyPlaceHolder &  c) [inline]

CopyFrom" constructor.

If constructed from this, it creates a new copy of the data. This provides symmetry with copy_from_me

Parameters:
cThe (placeholder) image to copy from.

Definition at line 661 of file image.h.

template<class T>
CVD::Image< T >::Image ( const ImageRef size) [inline]

Create an empty image of a given size.

Parameters:
sizeThe size of image to create

Definition at line 739 of file image.h.

template<class T>
CVD::Image< T >::Image ( const ImageRef size,
const T &  val 
) [inline]

Create a filled image of a given size.

Parameters:
sizeThe size of image to create
valThe value to fill the image with

Definition at line 763 of file image.h.

template<class T>
CVD::Image< T >::Image ( const std::pair< ImageRef, T > &  p) [inline]

Create a filled image of a given size.

Parameters:
pstd::pair<ImageRef, T> containing the size and fill value. Useful for creating containers of images with ImageCreationIterator

Definition at line 773 of file image.h.


Member Function Documentation

template<class T>
CopyPlaceHolder CVD::Image< T >::copy_from_me ( ) const [inline]

This returns a place holder from which an image can be constructed.

On construction, a new copy of the data is made.

Definition at line 669 of file image.h.

template<class T>
void CVD::Image< T >::copy_from ( const BasicImage< T > &  copy) [inline]

Make a (new) copy of the image, also making a copy of the data.

Parameters:
copyThe image to copy

Definition at line 678 of file image.h.

Referenced by CVD::Image< GRADIENT >::Image(), and CVD::Image< GRADIENT >::make_unique().

template<class T>
void CVD::Image< T >::copy_from ( const SubImage< T > &  copy) [inline]

Make a (new) copy of the image, also making a copy of the data.

Parameters:
copyThe image to copy

Reimplemented from CVD::SubImage< T >.

Definition at line 689 of file image.h.

template<class T>
const Image& CVD::Image< T >::operator= ( const Image< T > &  copyof) [inline]

Assign this image to another one.

This does not copy the data, it just creates a new reference to the image data

Parameters:
copyofThe image to copy

Definition at line 710 of file image.h.

template<class T>
void CVD::Image< T >::resize ( const ImageRef size) [inline]

Resize the image (destroying the data).

This does not affect any other images pointing to this data.

Parameters:
sizeThe new size of the image

Definition at line 783 of file image.h.

Referenced by CVD::Image< GRADIENT >::copy_from(), and CVD::joinImages().

template<class T>
void CVD::Image< T >::resize ( const ImageRef size,
const T &  val 
) [inline]

Resize the image (destroying the data).

This does not affect any other images pointing to this data.

Parameters:
sizeThe new size of the image
valThe value to fill the image with

Definition at line 797 of file image.h.


The documentation for this class was generated from the following file: