首页 > 其他分享 >opencv学习:图像下采样和上采样及拉普拉斯金字塔

opencv学习:图像下采样和上采样及拉普拉斯金字塔

时间:2024-09-15 20:21:06浏览次数:11  
标签:采样 拉普拉斯 cv2 up face down opencv 图像

图像下采样和上采样

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像处理功能,包括图像的上采样和下采样。

下采样(Downsampling)

下采样是减少图像分辨率的过程,通常用于图像压缩、图像分析等场景。在OpenCV中,下采样可以通过多种方法实现,其中最常用的是使用pyrDown函数。

pyrDown函数

  • 功能:将图像的尺寸缩小到大约原来的一半。
  • 语法:dst = cv2.pyrDown(src)
  • 参数:
    • src:输入图像。
    • dst:输出图像,尺寸大约是输入图像的一半。
face=cv2.imread('kele.png',cv2.IMREAD_GRAYSCALE)
face_down=cv2.pyrDown(face)
cv2.imshow('face_down',face_down)
face_down_2=cv2.pyrDown(face_down)
cv2.imshow('face_down_2',face_down_2)

上采样(Upsampling)

上采样是增加图像分辨率的过程,通常用于图像放大、图像增强等场景。在OpenCV中,上采样可以通过多种方法实现,其中最常用的是使用pyrUp函数。

pyrUp函数

  • 功能:将图像的尺寸增加到原来的两倍。
  • 语法:dst = cv2.pyrUp(src)
  • 参数:
    • src:输入图像。
    • dst:输出图像,尺寸是输入图像的两倍。
face_up=cv2.pyrUp(face)
cv2.imshow('face_up',face_up)
face_up_2=cv2.pyrUp(face_up)
cv2.imshow('face_up_2',face_up_2)

对已经进行过下采样的图像进行上采样

face_down_up=cv2.pyrUp(face_down)
face_down2_up=cv2.pyrUp(face_down_2)
cv2.imshow('face_down_up',face_down_up)

图像金字塔

图像金字塔是图像处理中的一个重要概念,它通过连续的下采样或上采样构建一系列不同分辨率的图像。在OpenCV中,可以使用pyrDownpyrUp函数来构建图像金字塔。

拉普拉斯金字塔

  • 拉普拉斯金字塔是一种特殊的图像金字塔,它通过计算相邻层之间的差异来保留图像的细节信息。
  • 拉普拉斯金字塔可以通过连续的下采样和上采样操作来构建。
# 构建拉普拉斯金字塔的第一层
# l0 是原始图像与第一次上采样后图像的差,表示第一层的细节
l0 = face - face_down_up

# 构建拉普拉斯金字塔的第二层
# l1 是第一次下采样图像与第二次上采样后图像的差,表示第二层的细节
l1 = face_down - face_down2_up

# 尝试通过添加拉普拉斯金字塔的第一层细节来还原原始图像
fuyuan = face_down_up + l0

# 显示拉普拉斯金字塔的各层细节
cv2.imshow('l0', l0)
cv2.imshow('l1', l1)

# 显示还原后的图像
cv2.imshow('fuyuan', fuyuan)

# 等待按键,然后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

标签:采样,拉普拉斯,cv2,up,face,down,opencv,图像
From: https://blog.csdn.net/mohanyelong/article/details/142184122

相关文章

  • opencv学习:图像旋转的两种方法,旋转后的图片进行模板匹配代码实现
    图像旋转在图像处理中,rotate和rot90是两种常见的图像旋转方法,它们在功能和使用上有一些区别。下面我将分别介绍这两种方法,并解释它们的主要区别rot90 方法rot90方法是NumPy提供的一种数组旋转函数,它主要用于对二维数组(如图像)进行90度的旋转。这个方法比较简单,只支持9......
  • opencv学习:信用卡卡号识别
    该代码用于从信用卡图像中自动识别和提取数字信息。该系统将识别信用卡类型,并输出信用卡上的数字序列。1.创建命令行参数数字模板信用卡#创建命令行参数解析器ap=argparse.ArgumentParser()#添加命令行参数-i/--image,指定输入图像路径ap.add_argument("-i","--i......
  • OpenCV和Tesseract OCR识别复杂验证码喽~~
    目录代码实现思路流程:主要流程:整体代码效果展示原图处理之后的图总结流程图代码实现思路使用OpenCV进行图像预处理,并通过TesseractOCR来识别验证码中的字符。以下是其实现思路的详细讲解:流程:加载验证码图像:使用cv2.imread()读取验证码图片,将其加载为......
  • OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述将一个图像添加到累积图像中。该函数将src或其部分元素添加到dst中:dst(......
  • 新电脑安装和配置pytorch、anaconda、CUDA、cuDNN、pycharm、OpenCV的过程记录
    显卡驱动和CUDA一、升级显卡驱动到官方最新版    1、打开英伟达官网,输入显卡芯片型号,手动搜索并下载显卡驱动。 NVIDIA官方驱动 ​    2、下载完成后安装驱动。 二、确认显卡支持的最高CUDA版本    1、键盘"win+R",调出运行输入cmd后点”......
  • OpenCV(cv::split())
    目录1.函数定义2.工作原理3.示例4.使用场景5.注意事项cv::split()是OpenCV提供的一个函数,用于将多通道图像分割成其各个单通道。该函数主要用于处理彩色图像和多通道矩阵,通常用于对图像中的每个颜色通道单独进行处理。1.函数定义voidcv::split(constMat&src,s......
  • OpenCV添加中文文字
    代码如下,随机在摄像头中添加文字importcv2importnumpyasnpfromrandomimportrandintfromPILimportImage,ImageDraw,ImageFontCOLOR=(255,0,0)font_size=24cap=cv2.VideoCapture(0)whilecap.isOpened():ret,frame=cap.read()width,height......
  • OpenCV(cv::dilate())
    目录1.函数定义2.工作原理3.示例4.应用场景5.膨胀和腐蚀的对比总结cv::dilate()是OpenCV中用于图像形态学变换的函数之一,与cv::erode()相对,它执行图像的膨胀操作。膨胀是一种将图像中的前景(白色区域)扩展的操作,通常用于填补图像中的小孔洞、连接分离的物体、或增强图......
  • OpenCV(cv::erode())
    目录1.函数定义2.工作原理3.示例4.应用场景总结cv::erode()是OpenCV中的图像形态学变换函数之一,用于执行图像的腐蚀操作。腐蚀是一种将图像中的白色区域缩小的操作,通常用于去除噪声、分离相邻的物体,或将小的图像细节消除。1.函数定义voidcv::erode(InputArraysrc......
  • OpenCV(cv::GaussianBlur())
    目录1.函数定义2.高斯模糊原理2.1高斯核\((3\times3)\)2.1.1高斯核的创建2.1.2卷积操作2.1.3边界处理2.1.4完成模糊处理2.1.5总结2.2高斯核\((5\times5)\)3.示例4.高斯核的生成5.高斯模糊的应用场景6.高斯模糊与其他模糊方式的对比7.总结cv::GaussianBlur()......