一、Canny边缘检测:
import cv2 import numpy as np# 定义图像显示函数 def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindows() # 阈值指定的越大,检测的图像的包括的内容越少,阈值越小,检测到的细节信息越多 img = cv2.imread('images\lena_color_256.tif',cv2.IMREAD_GRAYSCALE) v1 = cv2.Canny(img,80, 150) v2 = cv2.Canny(img,50, 100) res = np.hstack((v1, v2)) cv_show('threshold', res)
二、图像金字塔
高斯金字塔 :向下采样(缩小) 原理:将Ci与高斯内核卷积 将所有的偶数行和列去掉 高斯金字塔 :向上采样(放大) 原理: 将图像在每个方向上扩大为原来的两倍,新增的行与列用0填充 使用先前同样的内核(乘以4)与放大后的图像卷积获得近似值
img_oringe = cv2.imread('images/cameraman.tif') cv_show('oringe', img_oringe)up_image = cv2.pyrUp(img_oringe) down_image = cv2.pyrDown(img_oringe) # 不能使用np来展示图像 # res = np.hstack((up_image, down_image)) # cv_show('res', res) cv_show("up", up_image) cv_show("down", down_image)# 拉普拉斯金字塔 # l = Gi - pyrUp(PyrDown(Gi)) down = cv2o.pyrDown(img_oringe) down_up = cv2.pyrUp(down) l_l = down_up cv_show('lapulase',l_l)
三、轮廓检测法