2014-01-10 82 views
0

我想閾值和RGB圖像與規則屏蔽:R>1.2克& & R> 12億OpenCV的過濾/使用功能

有沒有什麼好的辦法做到這一點在OpenCV中?像一些模擬Python的過濾器()?

我正在使用OpenCV for Java並將它寫入純Java中的速度很慢。

任何幫助?謝謝!

回答

0

OpenCV沒有專門的功能來做到這一點,所以你將不得不使用其他OpenCV函數的組合。我不知道這是否比手寫循環更快,但你可以試試看。

第一種方法是使用split()函數。它會分裂3通道圖像分成3時可能相當簡單的方式比較在一個頻道圖像:

thresh = (r>1.2*g) & (r>1.2*b); 

當然這種方法有用於R,G和B的圖像數據複製和分配臨時存儲器的問題。可以使用的另一個技巧將防止內存分配和數據副本,但只能用於內存中連續的圖像。它使用reshape()函數。使用它,您可以將m * n 3通道矩陣轉換爲3 *(m * n)1通道矩陣,無需複製數據。通過調用此圖像上的列(0),列(1)和列(2),您可以訪問r,g和b圖像,您可以使用與之前相同的方式進行比較。

對不起,只給出了一般方向,並沒有提供代碼本身。我不熟悉OpenCV的Java接口(僅C++)。

+0

我會試試看。謝謝! –