C++实现对图片的深度优先搜索遍历的代码
时间: 2024-03-10 21:46:55 浏览: 11
以下是C++实现对图片的深度优先搜索遍历的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义图像的宽和高
const int WIDTH = 10;
const int HEIGHT = 10;
// 定义图像类型
typedef vector<vector<int>> Image;
// 定义深度优先搜索函数
void dfs(Image& image, int x, int y, int color, int newColor) {
// 如果当前像素的颜色不是要替换的颜色,就进行替换
if (image[x][y] == color) {
image[x][y] = newColor;
// 对当前像素的四个相邻像素进行递归搜索
if (x > 0) dfs(image, x - 1, y, color, newColor); // 上
if (x < WIDTH - 1) dfs(image, x + 1, y, color, newColor); // 下
if (y > 0) dfs(image, x, y - 1, color, newColor); // 左
if (y < HEIGHT - 1) dfs(image, x, y + 1, color, newColor); // 右
}
}
int main() {
// 初始化图像
Image image(WIDTH, vector<int>(HEIGHT));
for (int i = 0; i < WIDTH; i++) {
for (int j = 0; j < HEIGHT; j++) {
image[i][j] = i % 2 + j % 2;
}
}
// 打印原始图像
cout << "Original Image:" << endl;
for (int i = 0; i < WIDTH; i++) {
for (int j = 0; j < HEIGHT; j++) {
cout << image[i][j] << " ";
}
cout << endl;
}
cout << endl;
// 对图像进行深度优先搜索
dfs(image, 0, 0, image[0][0], 2);
// 打印替换后的图像
cout << "New Image:" << endl;
for (int i = 0; i < WIDTH; i++) {
for (int j = 0; j < HEIGHT; j++) {
cout << image[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
此代码实现了对一个随机生成的黑白格子图像进行深度优先搜索,并将其转换为灰色格子图像。您可以根据需要修改图像大小,以及要替换的颜色和替换后的颜色。