用訓練好的神經網路識別字元

2021-07-24 18:25:59 字數 1691 閱讀 6239

在sample資料夾下放了一些測試字元,都是20*20的。用來識別的。同時在工程目錄下放置了訓練好的神經網路xml檔案。如下圖:

const int numcharacter=10; //這裡只有0-9共10種字元

cvann_mlp ann;

vectorgetfiles(const string &folder,const bool all /* = true */)

else

subfolders.pop_back();

struct _finddata_t file_info;

long file_handler = _findfirst(current_folder.c_str(), &file_info);

while (file_handler != -1)

if (file_info.attrib & _a_subdir)

}else

if (_findnext(file_handler, &file_info) != 0) break;

} // while

_findclose(file_handler);

} return files;

}// !獲取垂直和水平方向直方圖

mat projectedhistogram(mat img, int t)

//normalize histogram

double min, max;

minmaxloc(mhist, &min, &max);

if (max>0)

mhist.convertto(mhist, -1, 1.0f / max, 0);//用mhist直方圖中的最大值,歸一化直方圖

return mhist;

}mat features(mat in, int sizedata)

for (int i = 0; i(j) = hhist.at(i);

j++;

} for (int x = 0; x(j) = (float)lowdata.at(x, y);

j++;

} }//if(debug)

// cout << out << "\n****************************************===\n";

return out;

}int recog(mat features)

void main()

{ mat srcimg;

ann.load("myann.xml"); //載入訓練好的神經網路xml檔案

string path="d:/cc/test_ann/test_ann/sample";

vectorstr;

str=getfiles(path,1);//得到每個測試的路徑名

for(int i=0;i

opencv 神經網路識別字母 數字

繼承自本人部落格 原文只是識別數字0 9,簡單修改後可以識別24個字母 除了i,o 與數字。把0與o看成一類,1與i看成一類 vs2012 64位 include include include include using namespace cv using namespace std char ...

神經網路識別車牌字元

opencv高階之路 神經網路識別車牌字元寫過有關用神經網路識別車牌字元的文章,但無奈只給出了樣本,沒有具體的 在這裡補足這個遺憾。opencv環境配置請參考 以下是 include mrdir.h const char mlpmodel ann.xml 中國車牌 const char strcha...

神經網路的訓練

既然我們希望網路的輸出盡可能的接近真正想要 的值。那麼就可以通過比較當前網路的 值和我們真正想要的目標值,再根據兩者的差異情況來更新每一層的權重矩陣 比如,如果網路的 值高了,就調整權重讓它 低一些,不斷調整,直到能夠 出目標值 因此就需要先定義 如何比較 值和目標值的差異 這便是損失函式或目標函式...