雾看Open(10)——图像金字塔与拉普拉斯金字塔

本文介绍如何利用OpenCV实现图像金字塔与拉普拉斯金字塔的构建过程,并通过实例演示了如何结合这两种技术来增强图像特征提取的效果。文章详细解释了相关函数如cv2.pyrUp()和cv2.pyrDown()的使用方法。
摘要由CSDN通过智能技术生成

前言

• 学习图像金字塔
• 使用图像创建一个新水果:“橘子苹果”
• 将要学习的函数有: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()  # 关闭所有窗口

参考

  1. OpenCV-Python-Tutorial-中文版20160814.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值