OpenCV——实验结果输出《图像金字塔》和《图像轮廓》

1.高斯金字塔

img = cv2.imread('./AM.png')
print(img.shape)
up=cv2.pyrUp(img)
cv_show('up',up)#只是将图片的大小改变了,并且是22倍的增长。
print (up.shape)
down=cv2.pyrDown(img)
cv_show('down',down)
print(down.shape)
up_down=cv2.pyrDown(up)
cv_show('up_down',np.hstack((img,up_down)))

先对图片进行放大处理;再对图片进行减小处理;最后对图片进行增大和减小,然后和原图进行对比。
请添加图片描述

2.拉普拉斯金字塔

down=cv2.pyrDown(img)
down_up=cv2.pyrUp(down)
l_1=img-down_up
cv_show('l1',l_1)

这是原图进行相减得出的结果
请添加图片描述

3.图像轮廓

cv2.findContours(img,mode,method)

mode:轮廓检索模式

  • RETR_EXTERNAL :只检索最外面的轮廓;
  • RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中;
  • RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;
  • RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次;

method:轮廓逼近方法

  • CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)。
  • CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。。
img = cv2.imread('contours.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
#后面的两个参数一个是 轮廓检索模式,另一个是轮廓逼近方法
binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

阈值参数设置为127。这意味着在二值化过程中,将像素灰度值小于等于127的像素设置为0(黑色),将像素灰度值大于127的像素设置为255(白色)。

选择阈值的具体值通常取决于图像的特性和应用需求。常见的选择是将阈值设置为图像灰度级的一半,即gray.max()/2。但这只是一种经验性的选择,并不适用于所有情况。为了得到最佳的阈值,可能需要进行实验和调整。

猜你喜欢

转载自blog.csdn.net/guoguozgw/article/details/131341540