人脸检测------图像梯度(16)

图像梯度:

原理:

图像梯度的基本原理
图像梯度的计算

一阶导数与Soble算子

在这里插入图片描述

二阶导数与拉普拉斯算子在这里插入图片描述

opencvAPI的应用:

图像的深度:图像中每个像素对应的位数
**图像的梯度:**图像的梯度世界上也就是一个图像,它是通过卷积和求取梯度之后联系原图进行一些列运算后得到的一副新的图像,而这幅图像可以使图像中物体的轮廓和边缘得到加强。
1. Sobel()算子

def sobel_demo(image):
    grad_x = cv.Sobel(image, cv.CV_32F, 1, 0);
    #Scharr算子,为Sobel算子的增强版
    grad_y = cv.Sobel(image, cv.CV_32F, 0, 1);
    grad_x = cv.convertScaleAbs(grad_x);
    grad_y = cv.convertScaleAbs(grad_y);
    cv.imshow("gradient_x", grad_x);
    cv.imshow("gradient_y", grad_y);

    gradient = cv.addWeighted(gradx, 0.5, grady, 0.5, 0);
    cv.imshow("gradient", gradient);

2. lapalian()算子

def lapalian_demo(image):
    dst = cv.Laplacian(image, cv.CV_32F);
    dst = cv.convertScaleAbs(dst);
    cv.imshow("laplalian_demo", dst);

3. 自定义算子:

def lapalian_demo(image):
    dst = cv.Laplacian(image, cv.CV_32F);
    dst = cv.convertScaleAbs(dst);
    cv.imshow("laplalian_demo", dst);

函数说明:

1. Sobel(image, cv.CV_32F, 0, 1):
在这里插入图片描述
设置ddepth为 cv.CV_32F是为了防止overfloading,dx为在x方向上的求导阶数,dy为在y方向上的求导阶数。

2. convertScaleAbs(grad_x):
缩放,计算绝对值,并将结果转化为8位
在这里插入图片描述
3. .addWeighted(gradx, 0.5, grady, 0.5, 0):
计算两个数组的加权和 :dst(I)=saturate(src1(I)∗alpha+src2(I)∗beta+gamma)
在这里插入图片描述
4. Laplacian(image, cv.CV_32F):
在这里插入图片描述

发布了42 篇原创文章 · 获赞 6 · 访问量 1508

猜你喜欢

转载自blog.csdn.net/qq_41156733/article/details/96423260