雾看Open(10)——图像金字塔与拉普拉斯金字塔
目录
- 前言
- 正文
- 图像金字塔
- 拉普拉斯金字塔
- code
- 参考
前言
• 学习图像金字塔
• 使用图像创建一个新水果:“橘子苹果”
• 将要学习的函数有:cv2.pyrUp(),cv2.pyrDown()。
正文
图像金字塔
所谓图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)
效果图
拉普拉斯金字塔
效果图
相当于是把膨胀后的图减去原始图所得到的图。
code
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltdef pyramid_demo(image):level = 4temp = 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_imagesdef 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() # 关闭所有窗口
参考
- OpenCV-Python-Tutorial-中文版20160814.pdf
雾看Open(10)——图像金字塔与拉普拉斯金字塔
目录
- 前言
- 正文
- 图像金字塔
- 拉普拉斯金字塔
- code
- 参考
前言
• 学习图像金字塔
• 使用图像创建一个新水果:“橘子苹果”
• 将要学习的函数有:cv2.pyrUp(),cv2.pyrDown()。
正文
图像金字塔
所谓图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)
效果图
拉普拉斯金字塔
效果图
相当于是把膨胀后的图减去原始图所得到的图。
code
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltdef pyramid_demo(image):level = 4temp = 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_imagesdef 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() # 关闭所有窗口
参考
- OpenCV-Python-Tutorial-中文版20160814.pdf