python 图像cropping padding(skimage cv2)

python 图像cropping padding

最近使用好几个算法都碰到了关于图像size的报错:

RuntimeError: The size of tensor a (588) must match the size of tensor b (587) at non-singleton dimension 2

这个是由于在卷积过程中,当stride为2时,有个向下取整的过程,所以如果图像的size是奇数的话就会导致前后的size不同。所以如果有N层卷积层,那么要保证图像的size是2^N的整数倍。
这个时候就需要resize了。
这里使用的是skimage和cv2。PIL读取的图像格式不同,所以这里没有使用。如果使用的是PIL的话,使用torchvision.transforms模块也是很便捷的(torchvision.transforms.CenterCrop(Size)等)。
以4层卷积层为例,则图像需要为16的倍数。

import cv2
import numpy as np
from skimage.io import imread, imsave

Cropping:

input_image = imread(input_dir)
size=input_image.shape
h=size[0]
w=size[1]
new_w=int(w/16)*16
new_h=int(h/16)*16
i=h-new_h
j=w-new_w
cropImg = input_image[int(i/2):int(h-i/2), int(j/2):int(w-j/2)]#CenterCrop

Padding:

padImg = cv2.copyMakeBorder(input_image, top, bottom, left, right, cv2.BORDER_CONSTANT, value = 0#上下左右要填补的像素数量,数值为0(黑边)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值