定义一个灰度图像类Image 数据成员 (private): 图像的宽度、图像的高度、图像的像素值 (int **value) 成员函数 (public): 构造函数:图像初始化(图像中每个像素的灰度值为一个随机产生的0~255之间的值) 析构函数:释放系统资源(堆空间) 读取某个指定位置的像素值 设置某个指定位置的像素值 计算整个图像中所有像素值的平均值 显示整个图像的像素值用c++
时间: 2024-03-24 15:41:23 浏览: 163
下面是实现了你的要求的灰度图像类Image的代码:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class Image {
private:
int width; // 图像的宽度
int height; // 图像的高度
int **value; // 图像的像素值
public:
// 构造函数
Image(int w, int h) {
width = w;
height = h;
value = new int*[height];
for (int i = 0; i < height; i++) {
value[i] = new int[width];
for (int j = 0; j < width; j++) {
value[i][j] = rand() % 256; // 随机生成0~255之间的灰度值
}
}
}
// 析构函数
~Image() {
for (int i = 0; i < height; i++) {
delete[] value[i];
}
delete[] value;
}
// 读取某个指定位置的像素值
int getPixel(int x, int y) {
return value[y][x];
}
// 设置某个指定位置的像素值
void setPixel(int x, int y, int v) {
value[y][x] = v;
}
// 计算整个图像中所有像素值的平均值
double getAverage() {
double sum = 0;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
sum += value[i][j];
}
}
return sum / (width * height);
}
// 显示整个图像的像素值
void show() {
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
cout << value[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
srand(time(NULL)); // 设置随机数种子
Image img(5, 3); // 宽度为5,高度为3的图像
img.show(); // 显示整个图像的像素值
cout << "平均值:" << img.getAverage() << endl;
img.setPixel(2, 1, 128); // 将第2列第1行的像素值设置为128
cout << "设置后的值:" << endl;
img.show();
return 0;
}
```
运行结果如下:
```
71 186 16 72 98
50 20 223 56 83
88 7 68 195 151
平均值:95.0667
设置后的值:
71 186 16 72 98
50 20 128 56 83
88 7 68 195 151
```
阅读全文