资源简介
最邻近算法KNN识别字符最邻近算法KNN识别字符最邻近算法KNN识别字符最邻近算法KNN识别字符
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace ml;
//利用KNN识别字符
int main()
{
////===============================读取训练数据===============================////
//图片共有10类
const int classSum = 26;
//每类共50张图片
const int imagesSum = 10;
//图片尺寸
const int imageRows = 33;
const int imageCols = 26;
//每一行一个训练图片
float trainingData[classSum*imagesSum][imageRows*imageCols] = {{0}};
//训练样本标签
float labels[classSum*imagesSum]={0};
for (int i = 0; i < classSum; i++)
{
//目标文件夹路径
std::string inPath = “E:\\image\\letters\\“;
char label = ‘a‘;
int k = 0;
label = label + i;
inPath = inPath + label + “\\*.jpg“;
//用于查找的句柄
long handle;
struct _finddata_t fileinfo;
//第一次查找
handle = _findfirst(inPath.c_str()&fileinfo);
if(handle == -1)
return -1;
do
{
//找到的文件的文件名
std::string imgname = “E:/image/letters/“;
imgname = imgname + label + “/“ + fileinfo.name;
//std::cout< Mat src = imread(imgname 0);
if (src.empty())
{
std::cout<<“can not load image \n“< return -1;
}
//序列化后放入作为样本矩阵的一行
for(int j = 0; j {
trainingData[i*imagesSum + k][j] = (float)src.data[j];
}
// 设置样本标签
labels[i*imagesSum + k] = label;
k++;
} while (!_findnext(handle &fileinfo));
_findclose(handle);
}
//训练样本数据及对应标签
Mat trainingDataMat(classSum*imagesSum imageRows*imageCols CV_32FC1 trainingData);
Mat labelsMat(classSum*imagesSum 1 CV_32FC1 labels);
//std::cout< //std::cout<
////===============================创建KNN模型===============================////
Ptrmodel = KNearest::create();
model->setDefaultK(classSum);
model->setIsClassifier(true);
PtrtrainData = TrainData::create(trainingDataMat ROW_SAMPLE labelsMat);
model->train(trainData);
//model->save(“E:/image/KNearestModel.xml“);
////===============================预测部分===============================////
Mat src dst;
src = imread(“E:/image/image/letters.png“);
if (src.empty())
{
std::cout<<“can not load image \n“< return -1;
}
dst = src.clone();
//创建感兴趣区域选取右侧10列作为预测数据
cvtColor(src src COLOR_BGR2GRAY);
blur(src src Size(99));
threshold(src src 210 255 THRESH_BINARY);
Canny(src src 20 80 3 false);
std::vector> contours;
std::vectorhierarchy;
findContours(src contours hierarchy RETR_EXTERNAL CHAIN_APPROX_SIMPLE Point(00));
for (int i = 0; i < cont
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4357 2018-02-03 21:07 KNN-letters\code1.cpp
文件 2570 2018-02-03 21:06 KNN-letters\code2.cpp
文件 908 2018-02-03 20:44 KNN-letters\letters\a\250.jpg
文件 921 2018-02-03 20:44 KNN-letters\letters\a\251.jpg
文件 915 2018-02-03 20:44 KNN-letters\letters\a\252.jpg
文件 874 2018-02-03 20:44 KNN-letters\letters\a\253.jpg
文件 914 2018-02-03 20:44 KNN-letters\letters\a\254.jpg
文件 873 2018-02-03 20:44 KNN-letters\letters\a\255.jpg
文件 873 2018-02-03 20:44 KNN-letters\letters\a\256.jpg
文件 917 2018-02-03 20:44 KNN-letters\letters\a\257.jpg
文件 870 2018-02-03 20:44 KNN-letters\letters\a\258.jpg
文件 914 2018-02-03 20:44 KNN-letters\letters\a\259.jpg
文件 1025 2018-02-03 20:44 KNN-letters\letters\b\240.jpg
文件 1065 2018-02-03 20:44 KNN-letters\letters\b\241.jpg
文件 1020 2018-02-03 20:44 KNN-letters\letters\b\242.jpg
文件 1071 2018-02-03 20:44 KNN-letters\letters\b\243.jpg
文件 1013 2018-02-03 20:44 KNN-letters\letters\b\244.jpg
文件 1058 2018-02-03 20:44 KNN-letters\letters\b\245.jpg
文件 1026 2018-02-03 20:44 KNN-letters\letters\b\246.jpg
文件 1017 2018-02-03 20:44 KNN-letters\letters\b\247.jpg
文件 1031 2018-02-03 20:44 KNN-letters\letters\b\248.jpg
文件 1057 2018-02-03 20:44 KNN-letters\letters\b\249.jpg
文件 879 2018-02-03 20:44 KNN-letters\letters\c\230.jpg
文件 871 2018-02-03 20:44 KNN-letters\letters\c\231.jpg
文件 881 2018-02-03 20:44 KNN-letters\letters\c\232.jpg
文件 882 2018-02-03 20:44 KNN-letters\letters\c\233.jpg
文件 879 2018-02-03 20:44 KNN-letters\letters\c\234.jpg
文件 880 2018-02-03 20:44 KNN-letters\letters\c\235.jpg
文件 880 2018-02-03 20:44 KNN-letters\letters\c\236.jpg
文件 873 2018-02-03 20:44 KNN-letters\letters\c\237.jpg
............此处省略264个文件信息
- 上一篇:中文语音系统 TTS5.1
- 下一篇:安装文件 小巧、实用万年历.exe
评论
共有 条评论