2015-09-27 39 views
4

正是標題所說的。通過在Linux中使用命令行獲取灰度圖片的「文本」邊界框的座標

嚴格地說,我爲灰度圖像定義的「文本」邊界框是一組4個座標(x,y,x +寬度,y +高度),必須在該圖像中定義矩形區域最大數量的非白色像素,同時儘可能少的白色像素數量(沒有改變最大數量的非白色像素)。我有引號中的文本,因爲圖像實際上不包含文本,因爲圖像只包含帶有顏色的像素。

已經在我的Ubuntu安裝的ImageMagick,並在終端輸入命令:$convert input.png -trim ouput.png,我得到:

input.png

output.png

打開新的標籤頁的兩個圖像在你的網頁瀏覽器,你將瞭解他們的差異,你也會明白我定義的「文本」邊界框。 output.png實際上是我正在尋找的寬度和高度。我不知道如何獲得x和y座標。

這裏提供的答案(1)對於pdf頁面不符合我的標準,因爲gs給我的「文本」邊界框有很大的白色邊界(並且實際上,據我所知,gs定義爲「文本」邊界框對於pdf而言,與我對圖片的「文本」邊界框的定義有所不同)。

+0

向我們展示您到目前爲止的代碼。 –

+1

我沒有獲取文本邊界框的座標的代碼,因爲我在文章中已經定義了它。我知道一個命令,我已經定義了裁剪圖片的文本邊界框:$ convert input.png -trim output.png。問題是我不知道如何獲得文本綁定框的座標。 – liaguridio

+0

你想爲此創建一個程序嗎?如果是這樣,你需要嘗試寫一些代碼。如果不是的話,你應該在SuperUser上發佈這個問題,並尋求如何使用現有程序的幫助。無論哪種方式,它是目前寫的題外話。 –

回答

1

我一直不明白的話在你的描述,我認爲一個圖會有所幫助,但如果你只是想知道什麼-trim會做的示例代碼中暗示:

identify -format "%@" image.png 
200x100+10+20 

所以,爲你的形象,你會得到

identify -format "%@" paper.png 
406x620+38+68 

這意味着你的盒子是38個像素的左上角右和68個像素從左上角下來,它是406個像素寬,620個像素高。

如果我在紅認爲矩形畫,我得到:

convert paper.png -stroke red -fill none -draw "rectangle 38,68 444,688" result.png 

enter image description here

得到同樣的結果,但在地方的identify使用convert的另一種方法是:

convert -format %@ paper.png info: 
406x620+38+68 
+0

非常感謝。您提供的命令的輸出爲我提供了我一直在尋找灰度圖像的座標,直到目前爲止。 – liaguridio

0

圖像沒有「文本邊界框」,因爲顯然沒有文本。

PDF文件中的圖像本身可能包含白色像素,如果它們是從書本中掃描出來的,那麼它們幾乎肯定會。這些像素計算圖像的邊界框,因爲它們是不透明的,並且會掩蓋在它們下面繪製的任何東西。

將「文本邊界框」定義爲「該圖片中沒有白色邊距並且僅包含文本的區域」也是相當荒謬的。如果它在圖像中,則不存在文本,只有定義像素的圖像樣本。這是一個圖片的文字,而不是文字。爲了區分包含文本的圖像區域和包含非文本的區域,您將需要OCR軟件,因爲只有OCR軟件才能夠檢測文本和非文本之間的區別,所以沒有其他操作會執行此操作。

+0

感謝批評我的話題:)。你是對的 。我編輯了一些我的概念更清晰。 – liaguridio