我正在使用OpenCV的ANPR系統上工作,並在一些文章中看到了一種做字符分割的方法。這個想法是製作一個圖表,顯示圖像上的顏色濃度。OpenCV顏色濃度直方圖
我該怎麼做?
這是圖像,我有:
我需要檢測黑色區域的位置,如上所示,以確定每個字符。
我曾嘗試將像素逐像素一起添加,但我在Android上執行此操作並且所需時間不可接受。
我正在使用OpenCV的ANPR系統上工作,並在一些文章中看到了一種做字符分割的方法。這個想法是製作一個圖表,顯示圖像上的顏色濃度。OpenCV顏色濃度直方圖
我該怎麼做?
這是圖像,我有:
我需要檢測黑色區域的位置,如上所示,以確定每個字符。
我曾嘗試將像素逐像素一起添加,但我在Android上執行此操作並且所需時間不可接受。
好了,它的一個月後,但我寫給你的代碼(蟒蛇)這一點;)
(假設你只是圖像密度直方圖後)
import cv
im2 = cv.LoadImage('ph05l.jpg')
width, height = cv.GetSize(im2)
hist = []
column_width = 1 # this allows you to speed up the result,
# at the expense of horizontal resolution. (higher is faster)
for x in xrange(width/column_width):
column = cv.GetSubRect(im2, (x * column_width, 0, column_width, height))
hist.append(sum(cv.Sum(column))/3)
爲了加快速度,你不需要改變你的圖像文件,只需改變採樣的bin寬度(腳本中的column_width
),顯然如果你這樣做會失去一些分辨率(如下圖所示)。
在圖像中,我用column_width
的1,10和100顯示了結果(圖hist
),他們分別以0.11,0.02和0.01秒爲我跑。
我也在PIL中寫過,但它運行速度慢了5到10倍。
非常感謝 – 2012-03-21 13:11:30
退房OpenALPR(http://www.openalpr.com)。它以同樣的方式進行字符分割(使用直方圖)。它在桌面上相當快,但我不確定在Android上會有多快。
這是什麼設計?你怎麼做?請嘗試添加更多關於您實際擁有的內容以及您想要執行的操作的詳細信息。 – 2012-02-19 18:39:25
那麼你現在有黑色區域的位置?你可以通過「逐個像素地增加數值」來表達你的意思嗎? – 2012-02-19 23:42:24
如果速度是您唯一的問題,那麼我建議您將輸入圖像縮放爲較低分辨率的2倍甚至4倍。所顯示的輸入圖像對於您要執行的任務而言是非常高的分辨率。 – 2012-02-20 12:49:34