我们在进行图像边缘检测的时候,尝尝会使用到sobel算子,本篇文章主要是向大家介绍一下sobel算子的具体用法。
首先要导入OpenCV的库
import cv2 as cv
import numpy as np
如果在导入cv2时报错,应该为本机没安装OpenCV-python
如果用的是pycharm
打开Setting
等待安装完成即可......
接下来是用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)