📜  边缘检测 opencv python (1)

📅  最后修改于: 2023-12-03 14:57:53.939000             🧑  作者: Mango

边缘检测 opencv python

边缘检测是计算机视觉中一个非常重要的过程,也是图像处理中的一个基本任务。OpenCV 为 Python 提供了强大的边缘检测功能。Python 的 OpenCV 库提供了多种边缘检测算法,例如 Sobel、Canny 等。在本篇文章中,我们将介绍如何使用 Python 的 OpenCV 库进行边缘检测,并提供代码示例。

Sobel 算法

Sobel 算法是一种常用的边缘检测算法,它是基于图像的灰度变化率来求出其边缘的。在 OpenCV 中,通过 cv2.Sobel() 函数来实现 Sobel 算法。

示例代码:

import cv2
import numpy as np

img = cv2.imread('test.jpg', 0)
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5)
sobelxy = cv2.Sobel(img, cv2.CV_64F, 1, 1, ksize=5)

cv2.imshow('Original Image', img)
cv2.imshow('Sobel X', sobelx)
cv2.imshow('Sobel Y', sobely)
cv2.imshow('Sobel XY', sobelxy)
cv2.waitKey(0)
cv2.destroyAllWindows()

上述代码中,cv2.imread() 函数读取了一张灰度图像,然后通过 cv2.Sobel() 函数分别进行了 X 方向、Y 方向和 XY 方向的边缘检测。cv2.imshow() 函数用于将图像显示出来。

Canny 算法

Canny 算法是一种广泛应用的边缘检测算法,它能够准确地检测出边缘。在 OpenCV 中,通过 cv2.Canny() 函数来实现 Canny 算法。

示例代码:

import cv2
import numpy as np

img = cv2.imread('test.jpg', 0)
edges = cv2.Canny(img, 100, 200)

cv2.imshow('Original Image', img)
cv2.imshow('Canny Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

上述代码中,cv2.imread() 函数读取了一张灰度图像,然后通过 cv2.Canny() 函数进行了 Canny 边缘检测。cv2.imshow() 函数用于将图像显示出来。

总结

本文介绍了 Python 的 OpenCV 库中的两种常用的边缘检测算法:Sobel 和 Canny。通过这两种算法,我们可以方便地进行图像边缘检测。