如何在opencv中的一个图像上应用多个过滤器?

时间:2014-04-16 07:53:10

标签: c++ image opencv

我尝试使用opencv对我的图像进行gabor过滤,我知道我应该使用多个参数并应用多个过滤器,但我不知道如何将所有这些应用于一个我可以使用opencv方法cvAddWeighted吗?或者还有其他方法吗?提前谢谢!

2 个答案:

答案 0 :(得分:2)

OpenCV在其图像处理模块中有gabor filter。如图here所示,您可以简单地获取gabor内核并将其应用于图像。链接中的代码

#include "opencv2/imgproc/imgproc.hpp"

cv::Mat kernel = cv::getGaborKernel(cv::Size(kernel_size,kernel_size), sig, th, lm, gm, ps);
Mat src_f; // img converted to float 
Mat dest;
cv::filter2D(src_f, dest, CV_32F, kernel);

您可以实施自己的Gabor filter。它创建一个过滤器并将其应用于图像。 Github Repo Link

答案 1 :(得分:1)

要应用多个过滤器,您只需链接'他们(一个接一个地申请):

Mat img;
Mat kernel1 = getGaborKernel(...);
Mat kernel2 = getGaborKernel(...);
Mat kernel3 = getGaborKernel(...);
Mat kernel4 = getGaborKernel(...);


cv::filter2D(img, img, CV_32F, kernel1);
cv::filter2D(img, img, CV_32F, kernel2);
cv::filter2D(img, img, CV_32F, kernel3);
cv::filter2D(img, img, CV_32F, kernel4);