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 详解爬取并统计CSDN全站热榜标题关键词词频流程

    Python 详解爬取并统计CSDN全站热榜标题关键词词频流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Python爬取CSDN全站综合热榜标题,顺便统计关键词词频,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Python lxml模块的基本使用方法分析

    Python lxml模块的基本使用方法分析

    这篇文章主要介绍了Python lxml模块的基本使用方法,结合实例形式分析了Python安装与使用lxml模块常见操作技巧与相关注意事项,需要的朋友可以参考下
    2019-12-12
  • Python入门教程(三十二)Python的命令行输入

    Python入门教程(三十二)Python的命令行输入

    这篇文章主要介绍了Python入门教程(三十二)Python的命令行输入,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-05-05
  • Python使用Rich type和TinyDB构建联系人通讯录

    Python使用Rich type和TinyDB构建联系人通讯录

    这篇文章主要为大家介绍了Python使用Rich type和TinyDB构建联系人通讯录应用程序,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解python 条件语句和while循环的实例代码

    详解python 条件语句和while循环的实例代码

    这篇文章主要介绍了详解python 条件语句和while循环,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 一篇文章带你了解python迭代器和生成器

    一篇文章带你了解python迭代器和生成器

    这篇文章主要介绍了Python中的迭代器和生成器,涉及到Python中很多重要的特性,需要的朋友可以参考下,希望能够给你带来帮助
    2021-08-08
  • Python实现不一样的猜数字游戏的示例代码

    Python实现不一样的猜数字游戏的示例代码

    大家知道“猜数字”这个游戏吗?顾名思义就是一个人想一个数字,另一个人猜。本文就来用Python实现一款不一样的猜数字游戏,感兴趣的可以了解一下
    2023-02-02
  • Numpy array数据的增、删、改、查实例

    Numpy array数据的增、删、改、查实例

    今天小编就为大家分享一篇Numpy array数据的增、删、改、查实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python 实现二维字典的键值合并等函数

    python 实现二维字典的键值合并等函数

    今天小编就为大家分享一篇python 实现二维字典的键值合并等函数,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Django使用Jinja2模板引擎的示例代码

    Django使用Jinja2模板引擎的示例代码

    这篇文章主要介绍了Django使用Jinja2模板引擎的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论