OpenCV基础API函数三

Posted ~搬~运~工~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV基础API函数三相关的知识,希望对你有一定的参考价值。

GaussianBlur 高斯模糊

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

返回值: 空
src:原图像
dst: 结果图像
ksize:模糊窗口的大小
sigmaX: X轴方向的卷积核标准差
sigmaY: Y轴方向的卷积核标准差,默认为零表示X=Y,当sigmaX,sigmaY同时为零的时候会从ksize中进行推算出sigmaX,sigmaY,
borderType: 边界处理方式

例子:利用你高斯模糊处理图片

void Demo::Gaussian_Blur(Mat &src)
    Mat dst;
    GaussianBlur(src, dst, Size(17, 17), 3);
    imshow("高斯模糊", dst);
    GaussianBlur(src, dst, Size(17, 17), 13);
    //ksize或sigmaX,sigmaY越大模糊程度越大
    imshow("高斯模糊1", dst);

bilateralFilter 双边模糊–美颜效果

void bilateralFilter( InputArray src, OutputArray dst, int d,
double sigmaColor, double sigmaSpace,
int borderType = BORDER_DEFAULT );

返回值:空
src:输入的原图像
dst:结果图像
d: 模糊的窗口的大小,如果为零 则从sigmaSpace中计算得出
sigmaColor:颜色控件的卷积核标准差
sigmaSpace:xy空间上面的卷积和标准差,当d>0不考虑sigmaSpace的大小
borderType :边界处理的模式

例子: 利用双边模糊对任务进行美颜

void Demo::mybilateralFilter(Mat &src)
    Mat dst;
    //双边模糊
    bilateralFilter(src,dst,0,100,10);
    imshow("高斯双边模糊1", dst);

相对于高斯模糊和均值模糊双边模糊有一个更大的优点,就是他能够保留图片中的边界 而不会把边界进行模糊从而达到美颜的效果

blur 卷积模糊

void blur( InputArray src, OutputArray dst,
Size ksize, Point anchor = Point(-1,-1),
int borderType = BORDER_DEFAULT );

返回值: 空
src:输入的圆图像
dst: 输出的结果图像
ksize: 卷积核的大小
anchor:卷积核的锚定点(中心点)
borderType: 边界处理模式

例子 对图像进行模糊

 	Mat dst;
    blur(src, dst, Size(9, 9));
    imshow("卷积模糊", dst);

copyMakeBorder 边界处理

void copyMakeBorder(InputArray src, OutputArray dst,
int top, int bottom, int left, int right,
int borderType, const Scalar& value = Scalar() );

返回值:空
src 输入的原图像
dst:输出的结果图像
top:插入顶边界的宽
bottom:插入底边界的宽
left:插入左边界的宽
right:插入右边界的宽
borderType:边界处理的方法
Scalar:颜色值
borderType意思
BORDER_CONSTANT对边界指定一个常数
BORDER_REPLICATE复制图形边上的一个像素填充到边界上 aaaaaa|abcdefgh|hhhhhhh
BORDER_REFLECT边界对图像进行映射 fedcba|abcdefgh|hgfedcb
BORDER_WRAP左右上下颠倒 把底边的像素填充到上边界,把上边的像素填充到地辩解 cdefgh
BORDER_REFLECT_101gfedcb|abcdefgh| gfedcba


由以上图骗我们可以看出各个方法区别所在

void Demo::myBlury(Mat &src)
    Mat dst;

    copyMakeBorder(src,dst,16,16,16,16,BORDER_CONSTANT,Scalar(0,0,255) );
    namedWindow("BORDER_CONSTANT", WINDOW_FREERATIO);
    imshow("BORDER_CONSTANT", dst);

    copyMakeBorder(src,dst,16,16,16,16,BORDER_REPLICATE    );
    namedWindow("BORDER_REPLICATE", WINDOW_FREERATIO);
    imshow("BORDER_REPLICATE", dst);

    copyMakeBorder(src,dst,16,16,16,16,BORDER_REFLECT  );
    namedWindow("BORDER_REFLECT", WINDOW_FREERATIO);
    imshow("BORDER_REFLECT", dst);

    copyMakeBorder(src,dst,16,16,16,16,BORDER_WRAP  );
    namedWindow("BORDER_WRAP", WINDOW_FREERATIO);
    imshow("BORDER_WRAP", dst);

    copyMakeBorder(src,dst,16,16,16,16,BORDER_REFLECT_101   );
    namedWindow("BORDER_REFLECT_101", WINDOW_FREERATIO);
    imshow("BORDER_REFLECT_101", dst);


    //blur(src, dst, Size(9, 9));
//    imshow("BORDER_CONSTANT ", dst);


以上是关于OpenCV基础API函数三的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )

Android SMS Verification API 结果码始终为 0

验证码逆向专栏极验三代四代点选类验证码逆向分析

opencv视频操作基础---VideoCapture类

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

OpenCV(21)角点检测1 -- Harris(基础)和Shi-Tomas(优化,佳)