使用Opencv python进行图片截取选取边缘越界图片

我们有时候使用Opencv截取一些图片的的时候,会选取到图片以外的区域,如何填充这种区域貌似没法直接用Opencv自带函数,这里给一个函数,以实现这个功能,是我毕设的很小一部分,需要的可以直接拿过去用。

效果:

            

填充使用的是图片区域的像素平均值,做法直接粘贴这个函数就可以了,cx,cy是原图坐标中心,w, h是截图的宽高。

def cut_image_out_of_range(img, rect):
    [cx, cy, w, h] = rect
    a = cx - w/2
    b = cx + w/2
    c = cy - h/2
    d = cy + h/2
    xl = 0
    yl = 0
    if a < 0:
        xl = abs(a)
    else:
        xl = 0
    if c < 0:
        yl = abs(c)
    else:
        yl = 0

    if a < 0:
        a = 0
    if b > img.shape[1]:
        b = img.shape[1]
    if c < 0:
        c = 0
    if d > img.shape[0]:
        d = img.shape[0]
    
    img_inner = img[int(c): int(d), int(a): int(b), :]
    color_B = np.mean(img_inner[:,:,0])
    color_G = np.mean(img_inner[:,:,1])
    color_R = np.mean(img_inner[:,:,2])
    ret_img = np.ones((int(h), int(w), 3), dtype=np.uint8)
    ret_img[:,:,0] = color_B
    ret_img[:,:,1] = color_G
    ret_img[:,:,2] = color_R
    ret_img[int(yl):int(img_inner.shape[0]+yl), int(xl):int(img_inner.shape[1]+xl), :] = img_inner

    return ret_img

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值