接上篇
在其官方文档中,filter2D()函数在掩模板介绍中一笔带过,我认为该函数应该进行详细介绍。
对于使用掩模板矩阵(kernel)计算每个像素值,结合函数filter2D()函数,其定义如下:

CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,InputArray kernel, Point anchor=Point(-1,-1),double delta=0, int borderType=BORDER_DEFAULT );

其官方指导文件对filter2D()函数的描述为:Convolves an image with kernel即利用内核实现对图像的卷积运算。参数含义如下:

InputArray src: 输入图像

OutputArray dst: 输出图像,和输入图像具有相同的尺寸和通道数量

int ddepth: 目标图像深度,如果没写将生成与原图像深度相同的图像。原图像和目标图像支持的图像深度如下:

    src.depth() = CV_8U, ddepth = -1/CV_16S/CV_32F/CV_64Fsrc.depth() = CV_16U/CV_16S, ddepth = -1/CV_32F/CV_64Fsrc.depth() = CV_32F, ddepth = -1/CV_32F/CV_64Fsrc.depth() = CV_64F, ddepth = -1/CV_64F

当ddepth输入值为-1时,目标图像和原图像深度保持一致。

InputArray kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵。如果想在图像不同的通道使用不同的kernel,可以先使用split()函数将图像通道事先分开。

Point anchor: 内核的基准点(anchor),其默认值为(-1,-1)说明位于kernel的中心位置。基准点即kernel中与进行处理的像素点重合的点。

double delta: 在储存目标图像前可选的添加到像素的值,默认值为0

int borderType: 像素向外逼近的方法,默认值是BORDER_DEFAULT,即对全部边界进行计算。

该函数使用于任意线性滤波器的图像,支持就地操作。当其中心移动到图像外,函数可以根据指定的边界模式进行插值运算。函数实质上是计算kernel与图像的相关性而不是卷积:

也就是说kernel并不是中心点的镜像,如果需要一个正真的卷积,使用函数flip()并将中心点设置为(kernel.cols - anchor.x - 1, kernel.rows - anchor.y -1).
该函数在大核(11x11或更大)的情况下使用基于DFT的算法,而在小核情况下使用直接算法(使用createLinearFilter()检索得到).
示例程序如下:

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>using namespace std;
using namespace cv;int main()
{Mat srcImage = imread("lena.jpg");//判断图像是否加载成功if(srcImage.data)cout << "图像加载成功!" << endl << endl;else{cout << "图像加载失败!" << endl << endl;return -1;}namedWindow("srcImage", WINDOW_AUTOSIZE);imshow("srcImage", srcImage);Mat kern = (Mat_<char>(3,3) << 0, -1 ,0,-1, 5, -1,0, -1, 0);Mat dstImage;filter2D(srcImage,dstImage,srcImage.depth(),kern);namedWindow("dstImage",WINDOW_AUTOSIZE);imshow("dstImage",dstImage);waitKey(0);return 0;
}

运行结果如下:

与上一篇运行结果相比并没有黑边存在!

opencv学习(七)之图像卷积运算函数filter2D()相关推荐

  1. opencv学习笔记16:梯度运算之scharr算子及其函数使用

    前文介绍了sobel算子 opencv学习笔记14:sobel算子及其函数使用 scharr算子理论 系数和sobel不一样,其他一样. scharr函数使用 dst=cv2.Scharr(src,d ...

  2. python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例

    本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy i ...

  3. youcans 的 OpenCV 学习课—5.图像的几何变换

    youcans 的 OpenCV 学习课-5.图像的几何变换 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 几何变换是指对图像的位置.大小.形状.投影进行变换,是将图像从 ...

  4. youcans 的 OpenCV 学习课—4.图像的叠加与混合

    youcans 的 OpenCV 学习课-4.图像的叠加与混合 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 本节介绍图像的加法.叠加与混合,提供完整例程和运行结果:加法 ...

  5. youcans 的 OpenCV 学习课—3.图像的创建与修改

    youcans 的 OpenCV 学习课-3.图像的创建与修改 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. OpenCV 中图像的数据结构是 ndarray 多维数组, ...

  6. youcans 的 OpenCV 学习课—2.图像读取与显示

    youcans 的 OpenCV 学习课-2.图像读取与显示 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 本节介绍图像的读取.保存和显示.除基本方法和例程外,还给出了从 ...

  7. python 图像卷积_[卷积神经网络(CNN)中的卷积核到底是如何提取图像特征的(python实现图像卷积运算)]...

    1.前言 我们知道,卷积核(也叫滤波器矩阵)在卷积神经网络中具有非常重要的作用.说白了,CNN主要作用在于提取图像的各种特征图(feature maps). CNN主要是通过卷积运算来完成特征提取的. ...

  8. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  9. OpenCV学习笔记(5)_ ellipse绘制函数浅析

    OpenCV学习笔记(5)_ ellipse绘制函数浅析 文章目录 OpenCV学习笔记(5)_ ellipse绘制函数浅析 1. ellipse第一种重载--绘制椭圆弧 1.1 函数原型 1.2 参 ...

最新文章

  1. 学习Python编程的19个资源
  2. 前端学习(2648):vue3.0的处理展示
  3. 有软件开发,就要有软件测试!
  4. mysql中data后面加什么_mysql中data_format用法
  5. JAVA 小易爱回文
  6. 27岁,30岁,37岁...... 你是否已经把世界拱手让人?
  7. Matplotlib画论文图之loss和validation曲线
  8. 接受密码和用户名,若用户名为‘admin‘,密码为‘‘123456‘则显示用户登录成功,否则一直登录
  9. LaRa:用于多摄像头BEV语义分割的潜表征和光线嵌入
  10. Bingo说说:从0开始到月入10万,告诉你一个万能赚钱公式
  11. centos linux 下的jdk安装 jdk-6u26-linux-x64.bin
  12. Python语音基础操作--11.2基于GMM的说话人识别模型
  13. 广成GCAN-IO模块介绍
  14. 这是我面试 42 场拿下字节、微软 offer 的方法论!
  15. mysql deadlock found_mysql死锁 Deadlock found when trying to get lock; try restarting transaction
  16. 3D建模教程讲解!3ds Max电吉他制作
  17. 运维Ansible自动化工具概述
  18. 从零开始学习小程序1-1开发一个单页面小程序
  19. 声卡突然听不到监听_初次玩外置声卡监听与录音 遇到些问题 恳请大神帮忙解决...
  20. SAP之VM创建SUSE虚拟机

热门文章

  1. 高通msm-V4L2-Camera驱动浅析2-框架详解
  2. RGB图像转换成HSV图像,HSV图像转换为RGB图像
  3. python:实现中文转英文(附完整源码)
  4. java dfa_基于java实现DFA算法代码实例
  5. k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略
  6. 互联网早报:淘宝App产品升级:微淘升级为订阅,买家秀社区升级为逛逛....
  7. 2020起重机械指挥模拟考试题及起重机械指挥作业考试题库
  8. Vue 创建粒子效果插件
  9. miui10 android 唤醒,小米再次推送MIUI10最新版,修复小爱同学唤醒功能,没理由不升级...
  10. C语言 char**