数字识别-C代码示例
以下是一个简单的数字识别C代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 训练集
int training_set[10][7][5] = {
{{1,1,1,1,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,1,1,1,1}}, // 0
{{0,0,1,0,0},{0,1,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,1,1,1,0}}, // 1
{{1,1,1,0,0},{0,0,0,1,0},{0,0,1,0,0},{0,1,0,0,0},{1,1,1,1,1}}, // 2
{{1,1,1,0,0},{0,0,0,1,0},{0,1,1,0,0},{0,0,0,1,0},{1,1,1,0,0}}, // 3
{{1,0,0,1,0},{1,0,0,1,0},{1,1,1,1,1},{0,0,0,1,0},{0,0,0,1,0}}, // 4
{{1,1,1,1,1},{1,0,0,0,0},{1,1,1,1,0},{0,0,0,1,0},{1,1,1,0,0}}, // 5
{{0,1,1,1,0},{1,0,0,0,0},{1,1,1,1,0},{1,0,0,1,0},{0,1,1,0,0}}, // 6
{{1,1,1,1,1},{0,0,0,1,0},{0,0,1,0,0},{0,1,0,0,0},{1,0,0,0,0}}, // 7
{{0,1,1,0,0},{1,0,0,1,0},{0,1,1,0,0},{1,0,0,1,0},{0,1,1,0,0}}, // 8
{{0,1,1,0,0},{1,0,0,1,0},{0,1,1,1,0},{0,0,0,1,0},{0,1,1,0,0}} // 9
};
// 测试集
int test_set[7][5] = {
{1,1,1,1,1},
{1,0,0,0,1},
{1,1,1,1,1},
{0,0,0,1,0},
{0,0,0,1,0},
{0,0,0,1,0},
{0,0,0,1,0}
};
// 按位比较两个数字
int compare_numbers(int num1[], int num2[], int size) {
int i;
for (i = 0; i < size; i++) {
if (num1[i] != num2[i]) {
return 0;
}
}
return 1;
}
int main() {
int i, j, k;
double similarity, max_similarity = 0.0;
int max_index = -1;
// 遍历所有训练集中的数字
for (i = 0; i < 10; i++) {
similarity = 0.0;
// 计算测试集和训练集中数字的相似度
for (j = 0; j < 7; j++) {
for (k = 0; k < 5; k++) {
if (test_set[j][k] == training_set[i][j][k]) {
similarity += 1.0;
}
}
}
// 找到相似度最高的数字
if (similarity > max_similarity) {
max_similarity = similarity;
max_index = i;
}
}
// 输出结果
if (max_index >= 0 && max_index <= 9) {
printf("The number is %d\n", max_index);
} else {
printf("The number cannot be recognized\n");
}
return 0;
}
该代码中使用了一个简单的训练集和测试集,训练集中包含0到9这10个数字的图像数据,而测试集中包含了一个待识别的数字。代码会遍历训练集中的每个数字,计算测试集和训练集中数字的相似度,最终输出相似度最高的数字。相似度的计算方式很简单,就是按位比较测试集和训练集中数字的每个像素值是否相同,相同则增加相似度值。
原文地址: https://www.cveoy.top/t/topic/qQ5 著作权归作者所有。请勿转载和采集!