酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]