opencv将图片局部区域填充_如何填充超出roi区域

2b8f7545e531b88ae181b57181961f75.png

最近在使用opencv的时候,进行了roi区域的截取,但是有时候在获取到图片的正中心之后,就是在计算四个四个角点之后,发现有的角点已经超出了图片范围之外。

对于这种超出界限的情况,无非就是四种。

  1. left小于零
  2. right大于图片的宽度
  3. top小于零
  4. down大于图片的高度

上述的四种情况之一都会造成无法正常截取到区域。

我的思路就是先把能够正常截取的区域截取出来。可以使用的下面的技巧就行截取:

import cv2

image = cv2.imread(image_path)
h,w = image.shape[:2]
roi = image[max(top,0):min(down,h),max(left,0):min(right,w)]

然后再对缺失的部分进行填充

top_add = abs(top) if top <0 else 0
down_add = abs(down-h) if down > h else 0
left_add = abs(left) if left < 0 else 0
right_add = abs(right-w) if right > w else 0

# 然后使用opencv的函数cv2.copyMakeBorder
# 最后一个是填充的方法,大家可以再去搜索一下
newroi = cv2.copyMakeBorder(roi,top_add,down_add,left_add,right_add,cv2.BORDER_CONSTANT)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值