1.sobel算子
dst=cv2.Sobel(src,ddepth,dx,dy,[ksize])
ddeph:处理结果图像深度
在处理一般的8位图像时,当计算的梯度小于0时,会自动变为0,造成边界信息的丢失。因此一般讲ddeph设为cv2.CV_64F,然后用函数讲结果图像转为8位的图像。
dst=cv2.convertScaleAbs(dst)
一般来说求取边界是,分别取dx=1,dy=1,然后将两个边界图像相加,不要讲dx,dy同时等于1
想要对不同方向的梯度取不同的权重,可以用函数addWeighted:
dst=cv2.addWeighted(src1,alpha,src2,beat,gamma)
程序示例:
import cv2
import numpy as np
img=cv2.imread("3.png",cv2.IMREAD_UNCHANGED)
sobelx=cv2.Sobel(img,cv2.CV_64F,dx=1,dy=0)
sobelx=cv2.convertScaleAbs(sobelx)
sobely=cv2.Sobel(img,cv2.CV_64F,dx=0,dy=1)
sobely=cv2.convertScaleAbs(sobely)
result=cv2.addWeig