資源簡介
讀取手寫數字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個文件信息
評論
共有 條評論