image.h

来自「基于图匹配理论的图像分割」· C头文件 代码 · 共 84 行

H
84
字号
/* a simple image class */#ifndef IMAGE_H#define IMAGE_H#include <cstring>template <class T>class image { public:  /* create an image */  image(const int width, const int height, const bool init = true);  /* delete an image */  ~image();  /* init an image */  void init(const T &val);  /* copy an image */  image<T> *copy() const;    /* get the width of an image. */  int width() const { return w; }    /* get the height of an image. */  int height() const { return h; }    /* image data. */  T *data;    /* row pointers. */  T **access;   private:  int w, h;};/* use imRef to access image data. */#define imRef(im, x, y) (im->access[y][x])  /* use imPtr to get pointer to image data. */#define imPtr(im, x, y) &(im->access[y][x])template <class T>image<T>::image(const int width, const int height, const bool init) {  w = width;  h = height;  data = new T[w * h];  // allocate space for image data  access = new T*[h];   // allocate space for row pointers    // initialize row pointers  for (int i = 0; i < h; i++)    access[i] = data + (i * w);      if (init)    memset(data, 0, w * h * sizeof(T));}template <class T>image<T>::~image() {  delete [] data;   delete [] access;}template <class T>void image<T>::init(const T &val) {  T *ptr = imPtr(this, 0, 0);  T *end = imPtr(this, w-1, h-1);  while (ptr <= end)    *ptr++ = val;}template <class T>image<T> *image<T>::copy() const {  image<T> *im = new image<T>(w, h, false);  memcpy(im->data, data, w * h * sizeof(T));  return im;}#endif  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?