• 大小: 5.98MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-02
  • 语言: 其他
  • 标签:

资源简介

读取手写数字0~9的图像,按照模板匹配方式完成手写数字的识别。环境:opencv3.4.4 + vs2015

资源截图

代码片段和文件信息


#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;


void staData(int test[50] int sample[10][50] double(&num)[3]);//统计识别结果
int getDist(int test[50] int sample[50]);//计算欧式距离
void readImg(Mat &src int(&test)[50] int i);//读取图片并进行预处理
void getPXSum(Mat &src int(&test)[50]);//对图像进行区域分割并字符串化图片区域
void readNum(int(&test)[50]);//输出字符串(测试用)
int cutLeft(Mat& src Mat& leftImg Mat& rightImg);//左右切割
void cutTop(Mat& src Mat& dstImg);//上下切割
int getColSum(Mat src int col);//统计所有列像素的总和
int getRowSum(Mat src int row);//统计所有行像素的总和


int main()
{
int sample[10][10][50];//保存样本图片字符串,每个数字10副图
double num[10][3] = {0};//统计结果
int test[50];//保存测试图片字符串
int test_num = 9;//测试的数字
int true_num = 0;//数字的识别结果

printf_s(“测试样本\n“);
char name[100];
sprintf_s(name “C:\\Users\\52840\\Desktop\\mnist数据集\\mnist_part\\t%d.jpg“ test_num);
Mat src = imread(name CV_LOAD_IMAGE_GRAYSCALE);//读取图片
readImg(src test test_num);
readNum(test);


for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
//printf_s(“与第%d个模板“ i * 10 + j);
char name[100];
sprintf_s(name “C:\\Users\\52840\\Desktop\\mnist数据集\\mnist_part\\%d_%d.jpg“ i j);
Mat Template = imread(name CV_LOAD_IMAGE_GRAYSCALE);//读取模板
readImg(Template sample[i][j] i);
//readNum(sample[i]);
//printf_s(“欧式距离:“);
//printf_s(“%d\n“ getDist(test sample[i][j]));
}

staData(test sample[i] num[i]);

printf_s(“数字%d的统计结果:\n“ i);
printf_s(“识别正确率:%lf\n“ num[i][0]);
printf_s(“识别错误率:%lf\n“ num[i][1]);
printf_s(“拒绝识别率:%lf\n“ num[i][2]);
//printf_s(“\n\n“);
if (i > 0) 
{
if (num[i][0]>num[i-i][0])
{
true_num = i;
}
}
}
printf_s(“识别结果为:%d“ true_num);
waitKey(0);
getchar();
return 0;
}


void getPXSum(Mat &src int(&test)[50])//对图像进行区域分割并字符串化图片区域
{
int mark = 0 count = 0;
//threshold(src src 100 1 CV_THRESH_BINARY);
while (mark<49)
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (src.at (i + 3 * (mark / 7) j + 3 * (mark % 7))>200) count++;
//printf_s(“%d“src.at (i + 3 * (mark % 7) j + 3 * (mark / 7)));
}
//printf_s(“\n“);
}
if (count > 5) test[mark] = 1;
else
{
test[mark] = 0;
}
//printf_s(“黑色像素占该3*3区域的%d/9\n“ count);
count = 0;
mark++;
}
}






void readImg(Mat &src int(&test)[50] int i)
{
//imshow(“origin0“ src);//显示原图片

medianBlur(src src 3);//中值滤波去椒盐噪声
//imshow(“origin2“ src);//显示去噪后图片

Mat element = getStructuringElement(MORPH_RECT Size(2 2));
dilate(src src element);
//imshow(“origin3“ src);//显示膨胀后图片

threshold(src src 100 255 THRESH_BINARY);

Mat rightImg leftImg;
cutLeft(src leftImg rightImg);
//imshow(“origin4“ leftImg);//显示切割后图片

resize(leftImg leftImg Size(21 21) 0 0 CV_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         888  2020-03-03 22:05  mnist_part\0_0.jpg
     文件         892  2020-03-03 22:05  mnist_part\0_1.jpg
     文件         815  2020-03-03 22:05  mnist_part\0_2.jpg
     文件        1051  2020-03-03 22:05  mnist_part\0_3.jpg
     文件         890  2020-03-03 22:05  mnist_part\0_4.jpg
     文件         895  2020-03-03 22:05  mnist_part\0_5.jpg
     文件         946  2020-03-03 22:05  mnist_part\0_6.jpg
     文件         907  2020-03-03 22:05  mnist_part\0_7.jpg
     文件        1001  2020-03-03 22:05  mnist_part\0_8.jpg
     文件         993  2020-03-03 22:05  mnist_part\0_9.jpg
     文件         655  2020-03-03 22:09  mnist_part\1_0.jpg
     文件         651  2020-03-03 22:09  mnist_part\1_1.jpg
     文件         705  2020-03-03 22:09  mnist_part\1_2.jpg
     文件         724  2020-03-03 22:09  mnist_part\1_3.jpg
     文件         853  2020-03-03 22:09  mnist_part\1_4.jpg
     文件         719  2020-03-03 22:09  mnist_part\1_5.jpg
     文件         665  2020-03-03 22:09  mnist_part\1_6.jpg
     文件         648  2020-03-03 22:09  mnist_part\1_7.jpg
     文件         736  2020-03-03 22:09  mnist_part\1_8.jpg
     文件         781  2020-03-03 22:09  mnist_part\1_9.jpg
     文件         900  2020-03-03 22:07  mnist_part\2_0.jpg
     文件         824  2020-03-03 22:07  mnist_part\2_1.jpg
     文件         882  2020-03-03 22:07  mnist_part\2_2.jpg
     文件         916  2020-03-03 22:07  mnist_part\2_3.jpg
     文件         895  2020-03-03 22:07  mnist_part\2_4.jpg
     文件         945  2020-03-03 22:07  mnist_part\2_5.jpg
     文件         892  2020-03-03 22:07  mnist_part\2_6.jpg
     文件         925  2020-03-03 22:07  mnist_part\2_7.jpg
     文件         756  2020-03-03 22:07  mnist_part\2_8.jpg
     文件         864  2020-03-03 22:07  mnist_part\2_9.jpg
     文件         883  2020-03-03 22:11  mnist_part\3_0.jpg
............此处省略134个文件信息

评论

共有 条评论