Opencv-3.4.10 高斯模糊 getDerivKernels getGaborKernel getGaussianKernel (C++)

原图

在这里插入图片描述

高斯模糊

使用高斯滤波器模糊图像。
该函数将源图像与指定的高斯核进行卷积。

void cv::GaussianBlur(InputArray src, OutputArray dst,Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT )	

ksize 高斯核的大小
sigmaX x方向的高斯核标准差
sigmaY y方向的高斯核标准差

测试(代码在后面)

在这里插入图片描述

getDerivKernels

该函数计算并返回空间图像导数的滤波器系数。

void cv::getDerivKernels(OutputArray kx, OutputArray ky, int dx, int dy, int ksize, bool normalize = false, int ktype = CV_32F )	

kx 行系数
ky 列系数
dx x的导数顺序
dy y的导数顺序
ksize 核大小
normalize 是否归一化系数

测试

在这里插入图片描述

getGaborKernel

Gabor滤波器是一种用于纹理分析的线性滤波器,本质上是指它分析图像中某个点或区域周围局部区域内特定方向的特定频率内容是否存在的分析。
返回 Gabor 滤波器系数。

Mat cv::getGaborKernel(Size ksize, double sigma, double theta,double lambd,double gamma,double psi = CV_PI *0.5,int ktype = CV_64F )	

ksize 返回核的大小
sigma 高斯包络的标准偏差。
theta Gabor函数平行条纹的法线方向
lambd 正弦因子的波长
gamma 空间纵横比
psi 相位偏移
Gabor滤波器维基百科链接

测试

在这里插入图片描述

getGaussianKernel

该函数计算并返回 ksize×1 高斯滤波器系数矩阵

Mat cv::getGaussianKernel(int ksize, double sigma, int ktype = CV_64F )	

ksize 核大小 奇数
sigma 标准差

测试

在这里插入图片描述

代码

#include <iostream>
#include <string>
#include <vector>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>

class Test_opencv {
public:
    void save_img(std::string pic_name, cv::Mat pic, std::string path = "C:\\Users\\Administrator\\Desktop\\pic\\") {
        std::string save_path = path + pic_name + ".jpg";
        cv::imwrite(save_path, pic);
    }

    void image_show(cv::Mat pic) {
        cv::imshow("result", pic);
        cv::waitKey(0);
    }
};


int main() {
    Test_opencv test_opencv;
    cv::Mat pic;
    cv::Mat image;
    image = cv::imread("C:\\Users\\Administrator\\Desktop\\grey.jpg", CV_LOAD_IMAGE_GRAYSCALE);// , CV_LOAD_IMAGE_COLOR);
    //cv::GaussianBlur(image, pic, cv::Size(7, 7), 1);
    //test_opencv.image_show(pic);
    /*
    cv::Mat x;
    cv::Mat y;
    cv::getDerivKernels(x, y, 1, 1, 1, false, CV_32F);
    std::cout << "x: " << x << std::endl;
    std::cout <<"y: " << y << std::endl;
    */
    cv::Mat kernel;
    //kernel = cv::getGaborKernel(cv::Size(3, 3), 1, 45, 4, 14);
    kernel = cv::getGaussianKernel(3, 1, CV_64F);
    std::cout << "kernel: " << kernel << std::endl;
    //test_opencv.save_img("GaussianBlur", pic);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值