Python中使用OpenCV(CV2)对图像进行边缘检测

使用的模块:

为此,我们将使用opencv-python模块,该模块为我们提供了处理图像的各种功能。

下载opencv-python

General Way:
pip install opencv-python

Pycharm Users:
Go to the project Interpreter and install this module from there.

opencv-python模块:

opencv-python是一个python库,它将解决计算机视觉问题并为我们提供编辑图像的各种功能。

注意:仅在灰度图像中可以进行边缘检测。

我们将在此脚本中做什么?

为了检测图像的边缘,我们将使用opencv-python的各种功能并提供阈值。

在本文中,我们将借助各种功能来检测图像的边缘,并且当我们下降时边缘的精度会提高,

  • Sobel 函数:此函数将创建水平和垂直边缘,然后,我们将使用按位或运算符将它们组合

  • Laplacian 函数:此函数是最简单的函数,只需要将灰度变量放入其中,就可以得到边缘检测到的图像。

  • Canny 函数:这是边缘检测功能最强大且最准确的功能。

让我们看一下代码:

1)使用Sobel函数

# 导入模块
import cv2

# 读取图像并将数据存储在变量中
image=cv2.imread("/home/abhinav/PycharmProjects/untitled1/b.jpg")

# 使它成为灰度
Gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

# 在sobel的帮助下实现
# 使sobel_horizontal
# 对于水平x轴= 1和yaxis = 0
# 对于垂直x轴= 0和y轴= 1
Horizontal=cv2.Sobel(Gray,0,1,0,cv2.CV_64F)

# 门槛就像 
# (variable,0,<x axis>,<y axis>,cv2.CV_64F)
Vertical=cv2.Sobel(Gray,0,0,1,cv2.CV_64F)

# 做按位运算
Bitwise_Or=cv2.bitwise_or(Horizontal,Vertical)# 显示边缘图像
cv2.imshow("Sobel Image",Bitwise_Or)
cv2.imshow("Original Image",Gray)
cv2.waitKey(0)cv2.destroyAllWindows()

输出:

Python |  使用OpenCV(CV2)进行图像边缘检测(1)

2)Laplacian函数

# 导入模块
import cv2

# 读取图像并将数据存储在变量中
image=cv2.imread("/home/abhinav/PycharmProjects/untitled1/b.jpg")

# 使它成为灰度
Gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

# 使拉普拉斯函数
Lappy=cv2.Laplacian(Gray,cv2.CV_64F)

cv2.imshow("Laplacian",Lappy)
cv2.imshow("Original",Gray)
cv2.waitKey(0)cv2.destroyAllWindows()

输出:

Python |  使用OpenCV(CV2)进行图像边缘检测(2)

3)使用Canny函数

# 导入模块
import cv2

# 读取图像并将数据存储在变量中
image=cv2.imread("/home/abhinav/PycharmProjects/untitled1/b.jpg")

# 使它成为灰度
Gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

# 使功能正常
canny=cv2.Canny(Gray,40,140)

# 阈值在bw 0和255之间变化
cv2.imshow("Canny",canny)
cv2.imshow("Original",Gray)
cv2.waitKey(0)cv2.destroyAllWindows()

输出:

Python |  使用OpenCV(CV2)进行图像边缘检测(3)