opencv源码解析--calcSharrDeriv/copyMakeBorder

本文深入解析了OpenCV中的两个关键函数:calcSharrDeriv用于图像微分,通过改进的Prewitt算子实现;copyMakeBorder用于图像边界扩展,支持多种填充模式。详细介绍了函数原理、参数意义及内部实现机制。

calcSharrDeriv(求微分)、copyMakeBorder(边缘扩展)--opencv源码解析

1. 函数体解析

        a. static void calcSharrDeriv(const cv::Mat& src, cv::Mat& dst)

函数作用 对输入图像求微分,并将微分结果存储到dst中,微分模板可见原理
src 待处理图像,src的depth必须为CV_8U,通道不做要求

dst

存放微分结果,类型同src,通道数为src的2倍

        b.void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom,
                         int left, int right, int borderType, const Scalar& value )

函数作用 为图像_src扩充边界
_src 输入图像
_dst 扩充边缘后的输出图像
top 图像上部扩充宽度
bottom 图像下部扩充宽度
left 图像左边扩充宽度
right 图像右侧扩充宽度
borderType

边缘扩充类型:

enum BorderTypes {
    BORDER_CONSTANT    = 0, //!< `iiiiii|abcdefgh|iiiiiii`  with some specified `i`

                                                    //固定值填充,默认为0
    BORDER_REPLICATE    = 1, //!< `aaaaaa|abcdefgh|hhhhhhh`

                                                    //以边缘值进行填充
    BORDER_REFLECT       = 2, //!< `fedcba|abcdefgh|hgfedcb`

                                                    //以镜像的方式进行填充
    BORDER_WRAP             = 3, //!< `cdefgh|abcdefgh|abcdefg`

                                                    //一种首位翻转的镜像方式填充
    BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba`
    BORDER_TRANSPARENT = 5, //!< `uvwxyz|abcdefgh|ijklmno`

    BORDER_REFLECT101  = BORDER_REFLECT_101, //!< same as       &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值