Sobel算子

图像梯度–Sobel算子

Sobel算子_第1张图片dst = cv2.Sobel(src, ddepth, dx, dy,ksize)
src::表示图片的路径
ddepth:表示图像的深度,一般取值为-1
dx和dy分别表示水平和竖直方向,一般水平方向为(1,0),竖直方向(0,1)
ksize表示Sobel算子的大小

import matplotlib as plt
import cv2
import numpy as np

img = cv2.imread('图片路径', cv2.IMREAD_GRAYSCALE)

# cv2.CV_64F表示显示负的的像素值
# cv2.convertScaleAbs()表示将所有的值转化成绝对值

# sobelx
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
# cv2.imshow('sobelx', sobelx)

# sobely
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)

# 将X和Y以权重的形式相加,显示轮廓
sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)
cv2.imshow('sobelxy', sobelxy)

# 一般都将X和Y分开求,同时求的效果不好
# sobelxy = cv2.Sobel(img, cv2.CV_64F, 1, 1, ksize=3)
# sobelxy = cv2.convertScaleAbs(sobelxy)
# cv2.imshow('sobelxy', sobelxy)

cv2.waitKey(0)
cv2.destroyAllWindows()

你可能感兴趣的:(opencv,opencv)