一、学习部分
代码如下(示例):
#图像梯度-Sobel算子
import cv2 as cv#opencv BGR
import matplotlib.pyplot as plt #包导入
import numpy as np
img = cv.imread('C:/Users/akaak/Pictures/OpenCV/pie.png',cv.IMREAD_GRAYSCALE)
cv.imshow("img",img)
cv.waitKey()
cv.destroyAllWindows()
def cv_show(img,name):
cv.imshow(name,img)
cv.waitKey()
cv.destroyAllWindows()
sobelx1 = cv.Sobel(img,cv.CV_64F,1,0,ksize=3)#x方向 1
cv_show(sobelx1,'sobelx1')
sobelx1 = cv.Sobel(img,cv.CV_64F,1,0,ksize=3)
sobelx2 = cv.convertScaleAbs(sobelx1)#x方向 1 取绝对值
cv_show(sobelx2,'sobelx2')
sobely = cv.Sobel(img,cv.CV_64F,0,1,ksize=3)
sobely = cv.convertScaleAbs(sobely)#y方向 1 取绝对值
cv_show(sobely,'sobely')
sobelxy = cv.addWeighted(sobelx2,0.5,sobely,0.5,0)#分别算 再叠加
cv_show(sobelxy,'sobelxy')
sobelxy=cv.Sobel(img,cv.CV_64F,1,1,ksize=3)#直接叠加
sobelxy = cv.convertScaleAbs(sobelxy)
cv_show(sobelxy,'sobelxy')
img2 = cv.imread('C:/Users/akaak/Pictures/OpenCV/lenaNoise.png',cv.IMREAD_GRAYSCALE)#第二张图片处理
cv_show(img2,'img2')
sobelx3 = cv.Sobel(img2,cv.CV_64F,1,0,ksize=3)
sobelx4 = cv.convertScaleAbs(sobelx3)
sobely3 = cv.Sobel(img2,cv.CV_64F,0,1,ksize=3)
sobely4 = cv.convertScaleAbs(sobely3)
sobelxy3 = cv.addWeighted(sobelx3,0.5,sobely3,0.5,0)
cv_show(sobelxy3,'sobelxy3')
二、运行结果
总结
完成图像梯度-Sobel算子