基于python的opencv项目实战笔记(四)—— 图像梯度处理

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算子:右-左,下-上
def cv_soble(img):
    #第二个参数为图像的深度,第三个和第四个分别表示dx,dy水平和竖直方向,ksize是Sobel算子的大小(一般是3*3)
    srcx=cv.Sobel(img,cv.CV_64F,1,0,ksize=3)#1,0水平
    srcx=cv.convertScaleAbs(srcx)#像素取绝对值
    srcy=cv.Sobel(img,cv.CV_64F,0,1,ksize=3)#0,1竖直
    srcy=cv.convertScaleAbs(srcy)
    srcxy=cv.addWeighted(srcx,0.5,srcy,0.5,0)#第五个参数为偏置项,一般为0
    #srcx1 = cv.Sobel(img,cv.CV_64F,1,1,ksize=3)#直接计算效果不好,有重影
    cv_show('src',srcxy)#|srcx|+|srcy|
#Scharr算子:比Sobel算子,数值有差异,结果更敏感一些
def cv_scharr(img):
    scharrx=cv.Scharr(img,cv.CV_64F,1,0)
    scharry=cv.Scharr(img,cv.CV_64F,0,1)
    scharrx= cv.convertScaleAbs(scharrx)
    scharry= cv.convertScaleAbs(scharry)
    scharrxy= cv.addWeighted(scharrx, 0.5, scharry, 0.5, 0)
    cv_show('scharrxy',scharrxy)
#laplacian算子:对变化更敏感。缺点:对噪音敏感
def cv_laplacian(img):
    laplacian=cv.Laplacian(img,cv.CV_64F)
    laplacian=cv.convertScaleAbs(laplacian)
    cv_show('laplacian', laplacian)
img=cv.imread('D://g.png')
img0=cv.imread('D://z.png')
cv_show('img',img0)
cv_soble(img0)
cv_scharr(img0)
cv_laplacian(img0)

你可能感兴趣的:(opencv项目实战,opencv,python,计算机视觉)