#if !defined (Magick_ChannelMoments_header)
#define Magick_ChannelMoments_header
#include "Magick++/Include.h"
#include <vector>
namespace Magick
{
class Image;
class MagickPPExport ChannelMoments
{
public:
ChannelMoments(void);
ChannelMoments(const ChannelMoments &channelMoments_);
~ChannelMoments(void);
ChannelMoments(const ChannelType channel_,
const MagickCore::ChannelMoments *channelMoments_);
double centroidX(void) const;
double centroidY(void) const;
ChannelType channel(void) const;
double ellipseAxisX(void) const;
double ellipseAxisY(void) const;
double ellipseAngle(void) const;
double ellipseEccentricity(void) const;
double ellipseIntensity(void) const;
double huInvariants(const size_t index_) const;
private:
std::vector<double> _huInvariants;
ChannelType _channel;
double _centroidX;
double _centroidY;
double _ellipseAxisX;
double _ellipseAxisY;
double _ellipseAngle;
double _ellipseEccentricity;
double _ellipseIntensity;
};
class MagickPPExport ImageMoments
{
public:
ImageMoments(void);
ImageMoments(const ImageMoments &imageMoments_);
~ImageMoments(void);
ChannelMoments channel(const ChannelType channel_=CompositeChannels) const;
ImageMoments(const Image &image_);
private:
std::vector<ChannelMoments> _channels;
};
}
#endif