C++ 实现:计算两幅黑白图像相似度,附代码及详细解释
```cpp #include <iostream> #include <iomanip> using namespace std; const int MAXN = 100; int image1[MAXN][MAXN]; int image2[MAXN][MAXN]; int main() { int m, n; cin >> m >> n; // 输入第一幅图像 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> image1[i][j]; } } // 输入第二幅图像 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> image2[i][j]; } } int sameCount = 0; // 统计相同像素点的数量 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (image1[i][j] == image2[i][j]) { sameCount++; } } } // 计算相似度 double similarity = (double)sameCount / (m * n) * 100; // 输出结果,精确到小数点后两位 cout << fixed << setprecision(2) << similarity << endl; return 0; } ``` 代码解释: 1. 输入部分: - 首先读取图像的行数 `m` 和列数 `n`。 - 接着使用两层嵌套的 `for` 循环分别读取第一幅图像和第二幅图像的像素值,并存储在二维数组 `image1` 和 `image2` 中。 2. 统计相同像素点数量: - 再次使用两层嵌套的 `for` 循环遍历两幅图像的每个像素点,比较对应位置的像素值。 - 如果相同,则将计数器 `sameCount` 加 1。 3. 计算相似度: - 用相同像素点的数量 `sameCount` 除以总像素点数量 `m * n`,再乘以 100,得到相似度的百分比。 4. 输出结果: - 使用 `fixed` 和 `setprecision(2)` 来确保输出结果精确到小数点后两位。最后将相似度输出。 ######[AI问答 | 555点数解答 | 2025-12-01 14:44:50]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)346
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)245
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)270
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)265
- 求解 1 至 n 内第 k 大孤独数:质数与余数的巧妙探寻(字节豆包 | 298点数解答 | 2025-11-10 20:01:57)159
- 巧判小朋友同桌意愿:满足需求还是无解难题?(字节豆包 | 599点数解答 | 2025-11-16 20:06:12)71
- 巧用代码判断:能否让 2n 个小朋友都拥有满意同桌?(字节豆包 | 445点数解答 | 2025-11-16 20:07:02)82
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)316
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)467
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)358
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)75
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)28