前言
• 学习图像金字塔
• 使用图像创建一个新水果:“橘子苹果”
• 将要学习的函数有:cv2.pyrUp(),cv2.pyrDown()。
正文
图像金字塔
所谓图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)
效果图
拉普拉斯金字塔
效果图
相当于是把膨胀后的图减去原始图所得到的图。
code
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def pyramid_demo(image):
level = 4
temp = image.copy()
pyramid_images = []
for i in range(level):
dst = cv.pyrDown(temp)
pyramid_images.append(dst)
cv.imshow("pyramid_down_"+str(i+1),dst)
temp = dst.copy()
return pyramid_images
def laplace_demo(image):
pyramid_images = pyramid_demo(image)
level = len(pyramid_images)
for i in range(level-1,-1,-1):
if i-1 <0:
#这个将一个减去另一个,相当于就可以得到整个图形的边界了。
expand = cv.pyrUp(pyramid_images[i],dstsize=image.shape[:2])
lpls = cv.subtract(image,expand)
cv.imshow("laplace_demo1"+str(i),lpls)
else:
expand = cv.pyrUp(pyramid_images[i],dstsize=pyramid_images[i-1].shape[:2])
cv.imshow("expand", expand)
lpls = cv.subtract(pyramid_images[i-1],expand)
cv.imshow("laplace_demo2"+str(i),lpls)
if __name__ == '__main__':
src = cv.imread(r"../../images/lena.jpg") # 读入图片放进src中
# cv.imshow("demo",src) # 将src图片放入该创建的窗口中
pyramid_demo(src)
laplace_demo(src)
cv.waitKey(0) # 等有键输入或者1000ms后自动将窗口消除,0表示只用键输入结束窗口
cv.destroyAllWindows() # 关闭所有窗口