1.滤波函数的计算
blur = cv2.blur(noise,(3,3))
gausi = cv2.GaussianBlur(noise,(5,5),1)
mid = cv2.medianBlur(noise,5)
2.形态学处理(morphologyEx函数)
kernel =np.ones((60,60),np.uint8)
open_m = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
close_m = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
img_sub = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
erosion = cv2.erode(img,kernel,iterations=1)
open_ = cv2.dilate(erosion,kernel,iterations=1)
3.Sobel算子
> cv2.Sobel(图像, 输出图像的深度(-1表示与原图像相同的深度), dx, dy, ksize)
> y:当组合为dx=1,dy=0时求x方向的一阶导数 dx=0,dy=1时求y方向的一阶导数
> ksize必须是1,3,5或者7,默认为3
y_img = cv2.Sobel(noise,-1,0,1,ksize=3)
x_img = cv2.Sobel(noise,cv2.CV_64F,1,0,ksize=3)
x_img = cv2.convertScaleAbs(x_img)
x_y = cv2.addWeighted(x_img,0.5,y_img,0.5,0)
cv2.Canny(img,40,100)
4.cv2.Laplacian()拉普拉斯
moon = cv2.imread('moon.tif',0)
cv2.imshow('moon',moon)
moon_a = cv2.Laplacian(moon,-1)
moon_c = cv2.Laplacian(moon,cv2.CV_64F)
moon_c = cv2.convertScaleAbs(moon_c)
5.金字塔
img_up = cv2.pyrUp(img)
img_down = cv2.pyrDown(img)
6.轮廓的检测 二值图像
cv2.findContours(image, mode, method)
cv2.RETR_EXTERNAL:表示只检测外轮廓
cv2.RETR_LIST:检测的所有的轮廓保存到链表
cv2.RETR_CCOMP:建立两个轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。
cv2.RETR_TREE:建立一个等级树结构的轮廓(常用)
method: cv2.CHAIN_APPROX_NONE:存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
cv2.CHAIN_APPROX_SIMPLE:压缩水平方向,垂直方向,对角线方向,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
img = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret ,img = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
binary,contours,hierarchy = cv2.findContours(img,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
dra_img = im.copy()
dra_img = cv2.drawContours(dra_img,contours,-1,(0,0,255),3)