#ifndef IMAGE_H #define IMAGE_H #include "struct.h" class Image { public: //构造函数及其重载 Image(){}//创建行列都为零的Image对象 Image(int h, int w);//创建h行,w列的Image对象 Image(int h, int w, unsigned char val); //创建的图像像素值都为val; Image(const char* ImageName); //利用文件名从硬盘加载图像文件成为Image对象; Image(unsigned char *m, int rows, int cols); //从一维静态数组创建Image对象,图像的行数和列数由后面两个参数给出; Image(unsigned char m[][100], int rows); //从静态二维数组创建Image对象,图像的行数(二维数组的第一个维度)由第二个参数rows给出; Image(unsigned char **m, int h, int w); //从动态数组(二级指针)创建Image对象,图像的行数和列数由后面两个参数给出; Image(Image &im); //拷贝构造函数; ~Image(); //析构函数; void ReadBMP(const char* filename); //从BMP文件中读入图像数据; void WriteBMP(const char* filename); //将图像数据保存为BMP图像文件; void WriteBMP(const char *filename, unsigned char** data);//翻转时写图片 void WriteBMP(const char *filename, unsigned char** data,//放缩时写图片 BMPFILEHEADER bmpfileheader, BITMAPINFOHEADER bitmapinfoheader); void ReadText(const char* filename); //从文本文件中读入图像数据; void WriteText(const char* filename); //将图像数据保存为文本文件; unsigned char& At(int row, int col); //获取第row行第col列的像素点的值; void Set(int row, int col, unsigned char value); //设置像素(row,col)为某值; void Set(unsigned char value); //设置图像所有像素为同一值; void Flip(int code); //图像的翻转; 根据code的值:0:左右翻转,1:上下翻转; void Resize(int code); //图像的缩放;根据code的值:0:缩小一倍,1:放大一倍; void Cut(int x1, int y1, int x2, int y2);//裁剪点(x1,y1)到点(x2,y2)的图像 void Rotate(int degree);//图像旋转的函数(简单起见,旋转角度为90度的整数倍) void Mean_Variance(float &m, float &var);//求图像的均值和方差,利用参数输出 friend void Swap(Image &a, Image &b);//使用友元函数交换两个Image对象的数据 void myFree(unsigned char** data, int h); Image& operator=(Image& val);//重载操作符 private: unsigned char **data; int height; int width; BMPFILEHEADER bmpfileheader; BITMAPINFOHEADER bitmapinfoheader; }; #endif