2012-10-06 32 views
4

我正在處理一些掃描的文本圖像,我需要突出顯示該圖像中的所有單詞。我知道這個問題相當於在它們周圍找到具有額外空格的子圖像。使用opencv分詞

OCR無法使用,我只需要用邊框勾勒每個單詞。 有人可以建議如何使用OpenCV完成它。

我試過閱讀關於閾值和分割。我只是找人指點我一些相關的材料。

+0

我曾嘗試閱讀有關閾值和segmenting.was只是想找個人給我指向有關材料,而不是一些代碼 – code4fun

回答

16

我認爲你的圖片有多行文字。在這種情況下,首先你要做的是檢測這些線。

爲此,第一個使用Otsu方法或自適應閾值二值化圖像。

然後,您可以使用稱爲「水平直方圖」的東西。它就像一個直方圖本身,但是顯示了哪裏有線條,哪裏有空白空間。因此,將圖像放在空行處,然後您會看到每一行。以下是水平直方圖的圖像。現在

Horizontal histogram

的每一行,找到水平直方圖。在此之前,嘗試做一些擴張和侵蝕,以便所有的字母組合在一起。然後,您可以在每行上找到連接組件以獲取每個單詞。然後繪製邊界。

下面的圖像顯示了水平和垂直直方圖:

horizontal and vertical histograms

這SOF可能會幫助:How to convert an image into character segments?

+0

嗨Abid.Thanks的響應。我實施了你的建議。爲了計算直方圖,我試圖使用OpenCV的calcHist方法,但該方法返回一個直方圖,其中每個強度值映射到像素數有這樣的強度。你可以建議我應該如何獲得水平直方圖,如上圖所示。OpenCV中是否存在與此相關的內容,或者我應該自行實施一些操作。 – code4fun

+0

我試圖通過總結每行中的像素值來得到你所顯示的那種直方圖。那是正確的做法嗎? – code4fun

+0

是的,第二個評論是正確的。總結每行/列中的像素值以獲取直方圖。它不是calcHist函數中的直方圖。 –