opencv 垂直投影分割字元

2021-07-31 14:59:32 字數 1706 閱讀 8628

原圖:

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/highgui/highgui.hpp"

#include #include using namespace cv;

using namespace std;

vectorhorizontalprojectionmat(mat srcimg)//水平投影

} }mat horizontalprojectionmat(height, width, cv_8uc1);//建立畫布

for (int i = 0; i < height; i++) }

for (int i = 0; i < height; i++)//水平直方圖 }

vectorroilist;//用於儲存分割出來的每個字元

int startindex = 0;//記錄進入字元區的索引

int endindex = 0;//記錄進入空白區域的索引

bool inblock = false;//是否遍歷到了字元區內

for (int i = 0; i verticalprojectionmat(mat srcimg)//垂直投影

} }mat verticalprojectionmat(height, width, cv_8uc1);//垂直投影的畫布

for (int i = 0; i < height; i++) }

for (int i = 0; i < width; i++)//垂直投影直方圖 }

imshow("垂直投影", verticalprojectionmat);

cvwaitkey(0);

vectorroilist;//用於儲存分割出來的每個字元

int startindex = 0;//記錄進入字元區的索引

int endindex = 0;//記錄進入空白區域的索引

bool inblock = false;//是否遍歷到了字元區內

for (int i = 0; i < srcimg.cols; i++)//cols=width

else if (projectvalarry[i] == 0 && inblock)//進入空白區

}delete projectvalarry;

return roilist;

}int main(int argc, char* argv)

; vectorb = verticalprojectionmat(srcimg);//先進行垂直投影

//垂直投影以後的結果

for (int j = 0; j < b.size(); j++)

//for (int i = 0; i < b.size(); i++) }

/* vectora = horizontalprojectionmat(srcimg);

char szname[30] = ;

for (int i = 0; i < a.size(); i++)

{ vectorb = verticalprojectionmat(a[i]);

for (int j = 0; j

結果

如果只打算看結果的話,可以遮蔽掉垂直投影的輸出

垂直投影法分割驗證碼

字元分割的方法太簡單 哈哈,我是故意的,就是想試試看有沒有效果 神經網路也太落後,哪有三層就想搞定這種事情 基於學姐給的建議以及自己查閱資料以後的結論,我會嘗試用更多的演算法來對字元進行分割。分割字元最常用的方法就是 垂直投影法 連通域分析法。其中連通域分析法對於非粘連字元的分割有很好的效果,但是對...

利用投影法進行字元分割

目錄 字元分割有很多方法,但並不是每一種方法是萬能的,那麼就需要根據自己的需要來分析。例如 我現在專案的需求是將一串編號給切分開來。查了網上的資料和文獻,大致適合專案的有兩種方法 投影分割法和連通域分割法。當然還有其他的一些改進的演算法,今天就不作深入討論,以後研究了再分享。投影法的原理其實很簡單,...

opencv利用投影法進行水平切割和垂直切割

水平投影切割 include include using namespace std using namespace cv int main for y 0 yheight y vectorroilist 用於儲存分割出來的每個字元 int startindex 0 記錄進入字元區的索引 int e...