如何在opencv中对一个图像应用多个过滤器

How to apply multiple filters on one image in opencv?

本文关键字:一个 图像 应用 过滤器 opencv      更新时间:2023-10-16

我正在尝试使用opencv对我的图像进行gabor滤波,我知道我应该使用多个参数并应用多个滤波器,但我不知道如何在一个图像中应用所有这些东西,我可以只使用opencv方法cvAddWeighted吗?或者还有别的办法?提前感谢!

OpenCV的图像处理模块中有gabor filter。如图所示,您可以简单地获得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链接

要应用多个过滤器,只需"连锁"它们(一个接一个地应用):

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);