2015-02-09 95 views
0

從灰度圖像I獲得的它的非零像素座標使用這行代碼中的OpenCV:如何計算OpenCV中連續的非零值之間的零像素?

現在,我要計數兩個連續的非零元素之間的零個像素image。但是,我應該先通過列還是行?例如,如果我在40x40墊中的點(30,20)和(30,23)處具有非零像素,並且在列之間移動,我會在它們之間給出2個零像素,並且通過行移動給我(39-30 )+ 40 + 40 + 29 = 118像素。我應該通過哪種方式正確計數這些像素?有沒有更好的方法,然後爲此目的而嵌套循環?謝謝。

+0

我不確定你的意思是第二點(30,23)我可能錯了,儘管 – GPPK 2015-02-09 09:07:11

+0

取決於你對「連續非零點之間的像素數」的定義......你想要什麼要處理這個值,或者該值的含義是什麼?......更高效的是首先在單行內計數(因爲Mat存儲器佈局的緩存) – Micka 2015-02-09 09:19:20

回答

1

我認爲你應該在端點上劃一條線並計算它下面的零像素。 OpenCV有一個LineIterator類,您可以從(30,20)到(30,23)進行8連接或4連接的線路並檢查值。

+0

我在文檔中看到它用於8位3通道圖像,將它用於單通道灰度圖像也是正確的嗎? – 2015-02-09 09:31:39

+0

我認爲它應該工作,除了'it'將指向'uchar'像素而不是'cv :: Vec3b'。 – Kornel 2015-02-09 09:40:12