水平投影切割
#include
#include
using namespace std;
using namespace cv;
int main()
}for (y = 0; yheight; y++)
}vectorroilist;//用於儲存分割出來的每個字元
int startindex = 0;//記錄進入字元區的索引
int endindex = 0;//記錄進入空白區域的索引
bool inblock = false;//是否遍歷到了字元區內
char szname[30] = ;
for (int i = 0; i < dst->height; ++i)
else
if (h[i] ==0 && inblock)//進入空白區了
}}
cvnamedwindow("二值影象", 1);
cvnamedwindow("水平投影", 1);
cvshowimage("二值影象", dst);
cvshowimage("水平投影", painty);
cvwaitkey(0);
cvdestroyallwindows();
cvreleaseimage(&dst);
cvreleaseimage(&painty);
return
0;}
分割原圖
水平投影圖
分割結果圖
垂直切割
#include
#include
using
namespace
std;
using
namespace cv;
int main()
}for (x = 0; xwidth; x++)
}cvshowimage("原圖", src);
cvshowimage("垂直投影", paintx);
//分割
vector
roilist;//用於儲存分割出來的每個字元
int startindex = 0;//記錄進入字元區的索引
int endindex = 0;//記錄進入空白區域的索引
bool inblock = false;//是否遍歷到了字元區內
char szname[30] = ;
for (int i = 0; i < dst->width; ++i)
else
if (v[i] == 0 && inblock)//進入空白區了}}
cvwaitkey(0);
cvdestroyallwindows();
cvreleaseimage(&dst);
cvreleaseimage(&paintx);
return
0;}
原圖和垂直投影圖
切割結果圖
利用投影法進行字元分割
目錄 字元分割有很多方法,但並不是每一種方法是萬能的,那麼就需要根據自己的需要來分析。例如 我現在專案的需求是將一串編號給切分開來。查了網上的資料和文獻,大致適合專案的有兩種方法 投影分割法和連通域分割法。當然還有其他的一些改進的演算法,今天就不作深入討論,以後研究了再分享。投影法的原理其實很簡單,...
利用投影法基於Opencv的文字定位
針對發票識別之類的自然環境中文字識別,對結果影響最大的應該是文字定位的問題。下面本人參考 boytnt 的基於opencv進行文字分塊切割 c 本人寫了乙份c 的 僅供參考 因為有一些干擾,所以文字定位並不是很完美,可以通過二值化的方法去掉一些干擾,以後再改進。include include inc...
opencv檢測直線方法之投影法
以下是我對投影法的一點認識和實驗 投影法就是數字影象在某個方向上進行畫素累加。通過水平和垂直方向的投影,可以得到 影象投影的幾個特點 1 區域的水平與豎直投影分布通常出現週期性的尖峰 2 在文字投影的行與行之間或列與列之間常會出現明顯的空白區 因此,求影象水平以及豎直投影,根據特點分別設以閾值就可以...