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 边缘扩充 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • pytorch人工智能之torch.gather算子用法示例

    pytorch人工智能之torch.gather算子用法示例

    这篇文章主要介绍了pytorch人工智能之torch.gather算子用法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Django与pyecharts结合的实例代码

    Django与pyecharts结合的实例代码

    这篇文章主要介绍了Django与pyecharts结合的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python中的JSON Pickle Shelve模块特性与区别实例探究

    Python中的JSON Pickle Shelve模块特性与区别实例探究

    在Python中,处理数据序列化和持久化是极其重要的,JSON、Pickle和Shelve是三种常用的模块,它们提供了不同的方法来处理数据的序列化和持久化,本文将深入研究这三个模块,探讨它们的特性、用法以及各自的优缺点
    2024-01-01
  • Python函数和文件操作详情

    Python函数和文件操作详情

    这篇文章主要介绍了Python函数和文件操作详情,函数在编程中是一个很重要的角色,我们可以将若干个语句组合形成一个函数,它可以接受传入参数,并在内部进行相关计算后产生输出,下文详细内容需要的小伙伴可以参考一下
    2022-05-05
  • Python中的os.path路径模块中的操作方法总结

    Python中的os.path路径模块中的操作方法总结

    os.path模块主要集成了针对路径文件夹的操作功能,这里我们就来看一下Python中的os.path路径模块中的操作方法总结,需要的朋友可以参考下
    2016-07-07
  • Python文件操作方法详解

    Python文件操作方法详解

    这篇文章主要介绍了Python文件操作方法详解,需要的朋友可以参考下
    2020-02-02
  • Python装饰器用法实例总结

    Python装饰器用法实例总结

    这篇文章主要介绍了Python装饰器用法,结合实例形式总结分析了Python常用装饰器的概念、功能、使用方法及相关注意事项,需要的朋友可以参考下
    2018-02-02
  • 利用Python演示数型数据结构的教程

    利用Python演示数型数据结构的教程

    这篇文章主要介绍了利用Python演示数型数据结构的教程,核心代码其实只有一行(XD),需要的朋友可以参考下
    2015-04-04
  • Python3 导入上级目录中的模块实例

    Python3 导入上级目录中的模块实例

    今天小编就为大家分享一篇Python3 导入上级目录中的模块实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 利用Python实现网络运维自动化的实战案例

    利用Python实现网络运维自动化的实战案例

    Python作为一种简洁而强大的编程语言,已经成为网络运维自动化的热门选择,本文将介绍如何利用Python实现网络设备配置管理、监控和故障排除等自动化任务,并提供代码示例,需要的朋友可以参考下
    2024-03-03

最新评论