python 边缘扩充方式的实现示例
作者:如雾如电 发布时间:2021-03-30 23:28:17
标签: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
来源:https://blog.csdn.net/qq_20373723/article/details/123142344
0
投稿
猜你喜欢
- 最近也是学习了一些爬虫方面的知识。以我自己的理解,通常我们用浏览器查看网页时,是通过浏览器向服务器发送请求,然后服务器响应以后返回一些代码数
- python 统计代码行数简单实例送测的时候,发现需要统计代码行数于是写了个小程序统计自己的代码的行数。#calclate_co
- 其实,这是一个非常容易解决掉的问题。在我看来,似曾相识,呵呵,最近学JavaScript可是学会了使用var声明变量。其实,在PHP中根本不
- 傅里叶变换是在高数是一个很重要的知识点,今天将结合Python代码实现傅立叶变换。傅立叶变换我们平时是如何去分解一个复杂的问题呢?一个经典的
- 功能函数// 绘制圆角矩形void DrawRotatedRectChamfer(cv::Mat mask,const cv::Rotate
- 本文实例讲述了Python基于hashlib模块的文件MD5一致性加密验证。分享给大家供大家参考,具体如下:使用hashlib模块,可对文件
- Vue 中使用v-for语句抛出错误的解决方案今天在维护以前的项目的时候遇见了下面的报错情况,开始我以为是因为jQuery和Vue冲突了,所
- 本文教大家调用电脑摄像头进行实时人脸+眼睛识别+微笑识别,供大家参考,具体内容如下一、调用电脑摄像头进行实时人脸+眼睛识别# 调用电脑摄像头
- 目录完整项目地址:简介功能商家端顾客端服务器端主要代码完整项目地址:https://github.com/kongxiangchx/Shop
- 一、硬件要求首先,TensorFlow-gpu不同于CPU版本的地方在于,GPU版本必须有GPU硬件的支撑。TensorFlow对NVIDI
- 平时见到的url参数都是key-value, 一般vlaue都是字符串类型的如果有幸和我一样遇到字典,列表等参数,那么就幸运了python2
- flash_url : "../swfupload/swfupload_f8.swf" upload_url: &quo
- 有助于效率的类型选择1、使你的数据尽可能小最基本的优化之一是使你的数据(和索引)在磁盘上(并且在内存中)占据的空间尽可能小。这能给出巨大的改
- 1. 在游戏循环中监听事件事件event:就是游戏启动后,用户针对游戏所做的操作例如:点击关闭按钮,点击鼠标,按下键盘监听:在游戏循环中,判
- 使用软件:MySQLMigrationTool 提示数据过大,无法导入。修改my.cnf文件的max_allowed_packet = 10
- 今天需要把一个省外项目的数据库从服务器上备份、拷贝到本机(跨地域传输数据库备份文件)。连上VPN,通过远程桌面连接,连接上服务器,发现数据库
- 为cd2sc.com网站功能而开发,代码为本人原创,生成速度一般。 (出于众所周知的原因,涉及到数据库的数据字段名称做了改动,并且为了代码明
- 1. 用户必须在几秒钟知道网站是做什么的。注意力是因特网上最有价值的货币。 如果访问者无法在几秒钟之内得知你的网站的方向,他很有可能转而访问
- rfind()方法返回所在子str 被找到的最后一个索引,或者-1,如果没有这样的索引不存在,可选择限制搜索字符串string[
- 前言经常看到这种算法可视化的图片,但往往做不到和画图的人心灵相通,所以想自己画一下,本文主要实现归并排序和希尔排序,如果想实现其他算法可参考