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

2021-08-15 22:13:04 字數 1894 閱讀 2523

水平投影切割

#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 在文字投影的行與行之間或列與列之間常會出現明顯的空白區 因此,求影象水平以及豎直投影,根據特點分別設以閾值就可以...