边缘是像素值发生跃迁的位置,是图像的显著特征之一,在图像特征提取,对象检测,模式识别等方面都有重要的作用。
sobel算子对图像求一阶导数。一阶导数越大,说明像素在该方向的变化越大,边缘信号越强。
因为图像的灰度值都是离散的数字, sobel算子采用离散差分算子计算图像像素点亮度值的近似梯度.

image.png
image.png
soble x轴和y轴要分别计算,计算完用add添加在一起
cv2.soble(image,desize,dx,dy)
image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Opencv学习
@File :sobel算子.py
@IDE :PyCharm
@Author :咋
@Date :2023/1/13 20:54
"""
import cv2
import numpy as np
image = cv2.imread("Handsome.jpg")
image = cv2.resize(image,(640,480))
# sobel算子
# 计算x方向
dx = cv2.Sobel(image,-1,1,0,ksize = 5)
# 计算y方向
dy = cv2.Sobel(image,-1,0,1,ksize = 5)
# 将两个方向加在一起,add方法
sobel_img = cv2.add(dx,dy)
# 展示图片
cv2.imshow("sobel_img",np.hstack((image,sobel_img)))
cv2.waitKey(0)
cv2.destroyAllWindows()

image.png