2011-10-11 86 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);