python+opencv边缘提取与各函数参数解析

1. Opencv简介

Opencv(Open Source Computer Vision Library)是一个开源计算机视觉库,主要用于实时图像处理、计算机视觉和模式识别等领域。其中,图像处理是Opencv最常用也是最基础的应用之一,边缘提取就是图像处理中常用的一种方法。

边缘提取的主要作用是将一幅图像中的目标轮廓提取出来,常用于图像分割、匹配和识别等任务。而在Opencv中,边缘提取函数主要有Canny、Laplacian、Sobel等三种。

2. Canny函数

2.1 函数功能

Canny函数是Opencv中用于边缘检测的函数,它可以检测出图像中的明显边缘,并在这些边缘上进行非极大值抑制和双阈值检测,从而得到最终的边缘图像。

函数参数:

image——输入图像

threshold1——第一个阈值

threshold2——第二个阈值

apertureSize——Sobel算子的大小

L2gradient——计算的方式,如果为True则采用更复杂的算法计算梯度幅值,否则采用简单算法计算

2.2 代码示例

import cv2

img = cv2.imread('lena.jpg',0)

edges = cv2.Canny(img,100,200)

cv2.imshow('Canny', edges)

cv2.waitKey(0)

cv2.destroyAllWindows()

其中,第一个参数0表示以灰度图像的形式读入图像,第一个阈值100和第二个阈值200是根据实际情况进行调整的。

3. Laplacian函数

3.1 函数功能

Laplacian函数是Opencv中用于边缘检测的函数,它可以检测出图像中的所有边缘,包括弱边缘和噪声点,并在这些边缘上进行非极大值抑制,从而得到最终的边缘图像。

函数参数:

image——输入图像

ddepth——输出图像的深度,如果为-1则表示与输入图像使用相同的深度

ksize——Sobel算子的大小

3.2 代码示例

import cv2

img = cv2.imread('lena.jpg',0)

laplacian = cv2.Laplacian(img,cv2.CV_64F)

cv2.imshow('Laplacian', laplacian)

cv2.waitKey(0)

cv2.destroyAllWindows()

其中,第一个参数0表示以灰度图像的形式读入图像,第二个参数cv2.CV_64F表示输出图像的深度。

4. Sobel函数

4.1 函数功能

Sobel函数是Opencv中用于边缘检测的函数,它可以检测出图像中的所有边缘,并在这些边缘上进行非极大值抑制和双阈值检测,从而得到最终的边缘图像。

函数参数:

image——输入图像

ddepth——输出图像的深度,如果为-1则表示与输入图像使用相同的深度

dx——x方向导数的阶数

dy——y方向导数的阶数

ksize——Sobel算子的大小

4.2 代码示例

import cv2

img = cv2.imread('lena.jpg',0)

sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)

sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)

cv2.imshow('SobelX', sobelx)

cv2.imshow('SobelY', sobely)

cv2.waitKey(0)

cv2.destroyAllWindows()

其中,第一个参数0表示以灰度图像的形式读入图像,第三个参数1表示x方向导数的阶数,第四个参数0表示y方向导数的阶数,ksize表示Sobel算子的大小。

5. 总结

在Opencv中,边缘提取函数主要有Canny、Laplacian和Sobel三种,它们各自具有不同的优缺点,可以根据实际情况进行选择。

需要注意的是,在进行边缘提取时,需要先将彩色图像转换为灰度图像,以方便进行后续处理。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签