OpenCV学习之图像梯度算子详解

2023-02-16,,,

本文是opencv图像视觉入门之路的第12篇文章,本文详细的介绍了图像梯度算子的各种操作,例如:sobel算子scharr算子laplacian算子等操作。

1.sobel算子

sobel算子是一种图像边缘检测算子,它是一种空间滤波器,可以检测图像中的边缘,而梯度运算是一种求导数的方法,可以用来检测图像中的局部变化。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    # 不同算子的差异
    img = cv2.imread('d:/jupyter_notebooks/0.jpg', cv2.imread_grayscale)
    sobel_x = cv2.sobel(img, cv2.cv_64f, 1, 0, ksize=3)
    sobel_y = cv2.sobel(img, cv2.cv_64f, 0, 1, ksize=3)
    sobel_x = cv2.convertscaleabs(sobel_x)
    sobel_y = cv2.convertscaleabs(sobel_y)
    sobel_xy = cv2.addweighted(sobel_x, 0.5, sobel_y, 0.5, 0)
 
    cv2.imshow("sobel_xy", sobel_xy)
 
    img = cv2.imread('d:/jupyter_notebooks/0.jpg', cv2.imread_grayscale)
    cv2.imshow("img", img)
 
    cv2.waitkey(0)
    cv2.destroyallwindows()

2.scharr算子

sobel算子是一种图像边缘检测算法,它可以检测图像中的水平边缘和垂直边缘。它使用卷积核来检测图像中的边缘,并且可以检测出图像中的细微变化。opencv是一个计算机视觉库,它提供了一系列的函数,可以用来处理图像,包括sobel算子。opencv提供了一系列的函数,可以用来处理图像,包括sobel算子,但它也提供了其他的图像处理算法,如canny边缘检测算法,hough变换算法等。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img = cv2.imread('d:/jupyter_notebooks/0.jpg', cv2.imread_grayscale)
    scharrx = cv2.scharr(img, cv2.cv_64f, 1, 0)
    scharry = cv2.scharr(img, cv2.cv_64f, 0, 1)
    scharrx = cv2.convertscaleabs(scharrx)
    scharry = cv2.convertscaleabs(scharry)
    scharrxy = cv2.addweighted(scharrx, 0.5, scharry, 0.5, 0)
 
    cv2.imshow("scharrxy", scharrxy)
 
    img = cv2.imread('d:/jupyter_notebooks/0.jpg', cv2.imread_grayscale)
    cv2.imshow("img", img)
 
    cv2.waitkey(0)
    cv2.destroyallwindows()

3.laplacian算子

laplacian算子是一种图像处理技术,它可以用来检测图像中的边缘和轮廓。它是一种二阶微分算子,可以用来检测图像中的边缘,并且可以用来检测图像中的噪声。它的基本原理是,它会计算图像中每个像素点的梯度,并且根据梯度的大小来检测图像中的边缘。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img = cv2.imread('d:/jupyter_notebooks/0.jpg', cv2.imread_grayscale)
    laplacian = cv2.laplacian(img, cv2.cv_64f)
    laplacian = cv2.convertscaleabs(laplacian)
 
    cv2.imshow("laplacian", laplacian)
 
    img = cv2.imread('d:/jupyter_notebooks/0.jpg', cv2.imread_grayscale)
    cv2.imshow("img", img)
 
    cv2.waitkey(0)
    cv2.destroyallwindows()

到此这篇关于opencv学习之图像梯度算子详解的文章就介绍到这了,更多相关opencv图像梯度算子内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!