2011-10-11 62 views
0

getMinFilter方法需要(int,int,cvSize),OpenCv如何期望我在一個int中傳遞二維圖像?OpenCV getMinFilter_GPU

srcType - 輸入圖像類型。僅支持CV_8UC1和CV_8UC4。

dstType - 輸出圖像類型。它僅支持與源類型相同的類型。

gpu::getMinFilter_GPU(int srcType, int dstType, const Size& ksize, Point anchor=Point(-1,-1)) 

感謝

+0

什麼讓你覺得你需要的圖像傳遞給該函數? – PlasmaHH

+0

內核是2D的,所以我猜想輸入和輸出必須是2D,無論是圖像還是Mat。但是,該方法只接受int輸入和輸出。 – Sharpie

+1

我沒有絲毫的想法opencv,但從快速瀏覽文檔說'創建最小過濾器'我會說它創建一個過濾器,並沒有做過濾。這似乎與'Ptr '的返回類型一致 – PlasmaHH

回答

1

其實getMinFilter_GPU功能沒有做任何任何過濾。它只是返回一個能夠進行過濾的特殊「處理器」對象。

使用GPU濾波函數在OpenCV中方便的做法是:

  • 創建過濾器對象(通過getMinFilter_GPU和許多其它函數返回);
  • 創建一個引擎對象(例如使用createFilter2D_GPU);
  • 在圖像處理上下文中存儲獲取的指針(如果爲每個幀重新創建引擎/過濾器對象,您將終止所有性能);
  • 對於每個輸入框調用引擎對象的apply方法進行過濾。

即:

GpuMat src, dst; 
Ptr<FilterEngine_GPU> filter = createFilter2D_GPU(
    getMinFilter_GPU(CV_8UC1, CV_8UC1, Size(3,3)), CV_8UC1, CV_8UC1); 
filter->apply(src, dst);