我们在进行图像边缘检测的时候,尝尝会使用到sobel算子,本篇文章主要是向大家介绍一下sobel算子的具体用法。

首先要导入OpenCV的库

import cv2 as cv
import numpy as np

如果在导入cv2时报错,应该为本机没安装OpenCV-python

如果用的是pycharm

打开Setting

【OpenCV】使用sobel算子进行边缘检测 在python环境下_灰度图

【OpenCV】使用sobel算子进行边缘检测 在python环境下_灰度图_02

 等待安装完成即可......

接下来是用sobel算子进行边缘检测(完整代码)

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
 
 
def cv_show(name,img):
    cv.imshow(name, img)
    cv.waitKey(0)
    cv.destroyAllWindows()
 
#sobel算子
img=cv.imread('leina.png',cv.IMREAD_GRAYSCALE)#转为灰度图
#只对x方向进行sobel运算
sobelx=cv.Sobel(img,cv.CV_64F,1,0,ksize=3)#对x方向进行sobel运算
sobelx=cv.convertScaleAbs(sobelx)#取绝对值
 
 
sobely=cv.Sobel(img,cv.CV_64F,0,1,ksize=3)
sobely=cv.convertScaleAbs(sobely)
 
sobel=cv.addWeighted(sobelx,0.5,sobely,0.5,0)#将x方向和y方向计算过的图像拼接
sobel=cv.resize(sobel,(600,600))
 
cv_show('thresh',thresh)import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
 
 
def cv_show(name,img):
    cv.imshow(name, img)
    cv.waitKey(0)
    cv.destroyAllWindows()
 
#sobel算子
img=cv.imread('leina.png',cv.IMREAD_GRAYSCALE)#转为灰度图
#只对x方向进行sobel运算
sobelx=cv.Sobel(img,cv.CV_64F,1,0,ksize=3)#对x方向进行sobel运算
sobelx=cv.convertScaleAbs(sobelx)#取绝对值
 
 
sobely=cv.Sobel(img,cv.CV_64F,0,1,ksize=3)
sobely=cv.convertScaleAbs(sobely)
 
sobel=cv.addWeighted(sobelx,0.5,sobely,0.5,0)#将x方向和y方向计算过的图像拼接
sobel=cv.resize(sobel,(600,600))
 
cv_show('thresh',thresh)