python 边缘扩充方式的实现示例

 更新时间:2022年03月09日 09:04:21   作者:如雾如电  
本文主要介绍了python 边缘扩充方式的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文主要介绍了python 边缘扩充方式的实现示例,具体如下:

import cv2
 
# big_pad=True:当目标图像高和宽均大于原图时,进行边缘填充
# big_pad=False:按照目标尺寸的最小缩放比例,先缩放,再进行边缘填充
# borderType=cv2.BORDER_CONSTANT:表示常量填充,borderValue为填充常量0~255(黑~白)
# borderType=cv2.BORDER_REPLICATE:边界复制填充
# borderType=cv2.BORDER_REFLECT:边界反射填充
# borderType=cv2.BORDER_WRAP:边框包装填充
 
def image_padding(image, target_shape, big_pad=True, 
                  borderType=cv2.BORDER_REFLECT, borderValue=(0, 0, 0)):
    # 目标尺寸大小
    ph, pw = target_shape
    # 原始图片尺寸
    h,  w, _ = image.shape
    if big_pad and ph > h and pw > w: # 以原图为中心进行边缘填充
        top = bottom = (ph - h) // 2  # 获取上、下填充尺寸
        top += (ph - h) % 2 # 为保证目标大小,无法整除则上+1
        left = right = (pw - w) // 2
        left += (pw - w) % 2 # 为保证目标大小,同理左上+1
        image_padded = cv2.copyMakeBorder(image, top, bottom, left, right,
                                          borderType=borderType, value=borderValue)
    else: # 最小比例缩放填充(大尺寸:高/宽比例变化较大的将被填充,小尺寸反之)
        # 计算缩放后图片尺寸
        scale = min(pw/w, ph/h) # 获取高/宽变化最小比例
        nw, nh = int(scale * w), int(scale * h)
        # 对原图按照目标尺寸的最小比例进行缩放
        img_resized = cv2.resize(image, (nw, nh))
        top = bottom = (ph - nh) // 2  # 获取上、下填充尺寸
        top += (ph - nh) % 2 # 为保证目标大小,无法整除则上+1
        left = right = (pw - nw) // 2
        left += (pw - nw) % 2 # 为保证目标大小,同理左上+1
        image_padded = cv2.copyMakeBorder(img_resized, top, bottom, left, right, 
                                          borderType=borderType, value=borderValue)
    return image_padded
 
 
if __name__ == "__main__":
    path = './2_2.png'
    img = cv2.imread(path)
    img_pad = image_padding(img, (640,640))
    cv2.imwrite('./1_BORDER_WRAP.png',img_pad)
    # cv2.imwrite('./1_.png',img_pad[64:576,64:576])

原图

BORDER_WRAP

REFLECT

到此这篇关于python 边缘扩充方式的实现示例的文章就介绍到这了,更多相关python 边缘扩充 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 详细总结Python类的多继承知识

    详细总结Python类的多继承知识

    Python类的多继承知识是非常易于新手理解的,如果你是刚刚入门Python的话,欢迎参考本篇文章,本文对Python类的多继承知识作出了非常详细的解释,还有相关代码参考哦。
    2021-05-05
  • Python  pandas中的shift位移操作方法

    Python  pandas中的shift位移操作方法

    shift() 函数是 Pandas 中用于移动或偏移数据的重要工具,它可以处理时间序列数据、计算数据差值以及进行数据预处理,本文介绍Python  pandas中的shift位移操作方法,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Numpy的各种下标操作的示例代码

    Numpy的各种下标操作的示例代码

    本文主要介绍了Numpy的各种下标操作的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • selenium+unittest实现web自动化的示例代码

    selenium+unittest实现web自动化的示例代码

    本文主要介绍了selenium+unittest实现web自动化的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python基础之序列操作

    python基础之序列操作

    这篇文章主要介绍了python序列操作,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • 使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式

    使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式

    今天小编就为大家分享一篇使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python按照list dict key进行排序过程解析

    Python按照list dict key进行排序过程解析

    这篇文章主要介绍了Python按照list dict key进行排序过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 简单了解python单例模式的几种写法

    简单了解python单例模式的几种写法

    这篇文章主要介绍了简单了解python单例模式的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 浅谈Python中对象是如何被调用的

    浅谈Python中对象是如何被调用的

    本文主要介绍了浅谈Python中对象是如何被调用的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • python解决方案:WindowsError: [Error 2]

    python解决方案:WindowsError: [Error 2]

    使用Python的rename()函数重命名文件时出现问题,提示 WindowsError: [Error 2] 错误,需要的朋友可以参考下
    2016-08-08

最新评论