【opencv学习】【图像金字塔】

今天简单学习下图像金字塔,说白了就是图像放大缩小的一些方法,但是是等比例的。

import cv2
import numpy as np


# 展示图像,封装成函数
def cv_show_image(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)  # 等待时间,单位是毫秒,0代表任意键终止
    cv2.destroyAllWindows()

# 图像金字塔,上面的size小,下面的size大
# 比如一个图像的shape是(H,W)
# 那么金字塔上面一层就是(1/2 * H, 1/2 * W)
# 那么金字塔再上面一层就是(1/4 * H, 1/4 * W)
# 那么金字塔再上面一层就是(1/8 * H, 1/8 * W)
# 那么金字塔再上面一层就是(1/16 * H, 1/16 * W)
# 这个是个缩小的过程,方法就是,先用高斯核进行卷积,让每个像素点都是含有临近像素的一些信息,再去掉所有的偶数的行和列
# 这个过程叫做下采样,缩小了


# 同样的道理,上采样就是图像变大了。
# 那么金字塔下一层就是(2*H, 2*W)
# 那么金字塔再下一层就是(4*H, 4*W)
# 那么金字塔再下一层就是(8*H, 8*W)
# 比如扩大两倍[[10, 20], [30, 40]]  ===>>>  [[10, 0, 20, 0],[0, 0, 0, 0],[30, 0, 40, 0],[0, 0, 0, 0]]

img = cv2.imread('images/saoge.jpg', cv2.IMREAD_GRAYSCALE)
print(img.shape)  # (337, 600)
up = cv2.pyrUp(img)
print(up.shape)   # (674, 1200)
cv_show_image('up', up)
down = cv2.pyrDown(img)
print(down.shape)  # (169, 300)
cv_show_image('down', down)


猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/122908680