OpenCV学习(26)

本文深入剖析OpenCV中的图像处理函数,主要讲解了boxFilter函数的源码,包括其内部逻辑和如何处理特殊情况。同时,介绍了FilterEngine类作为OpenCV图像滤波的核心引擎,其在不同滤波操作中的应用。最后,分析了blur函数的实现,指出其实质是调用boxFilter并进行均一化处理。
摘要由CSDN通过智能技术生成

图像处理(1):

线性滤波(2):线性滤波相关OpenCV源码剖析

一,OpenCV 中boxFilter函数源码解析;二,FilterEngine类解析:OpenCV图像滤波核心引擎;

三,OpenCV中blur函数源码剖析;

一,OpenCV 中boxFilter函数源码解析

   我们可以在OpenCV的安装路径的\sources\modules\imgproc\src下的smooth.cpp源文件的第711行找到boxFilter函数的源代码。(但是源代码只限于曾经版本的opencv,最新版只有封装好的函数)。

原码如下:

//-----------------------------------【boxFilter()函数中文注释版源代码】----------------------------
//     代码作用:进行box Filter滤波操作的函数
//     说明:以下代码为来自于计算机开源视觉库OpenCV的官方源代码
//     OpenCV源代码版本:2.4.8
//     源码路径:…\opencv\sources\modules\imgproc\src\smooth.cpp
//     源文件中如下代码的起始行数:711行
//     中文注释by浅墨
//--------------------------------------------------------------------------------------------------------
void cv::boxFilter( InputArray _src,OutputArray _dst, int ddepth,
                Size ksize, Point anchor,
                bool normalize, int borderType)
{
   Mat src = _src.getMat();//拷贝源图的形参Mat数据到临时变量,用于稍后的操作
int sdepth =src.depth(), cn = src.channels();//定义int型临时变量,代表源图深度的sdepth,源图通道的引用cn
 
//处理ddepth小于零的情况
   if( ddepth < 0 )
       ddepth = sdepth;
   _dst.create( src.size(), CV_MAKETYPE(ddepth, cn) );//初始化目标图
Mat dst =_dst.getMat();//拷贝目标图的形参Mat数据到临时变量,用于稍后的操作
 
//处理 borderType不为 BORDER_CONSTANT 且normalize为真的情况
   if( borderType != BORDER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值