cv2.resize 填充短边
时间: 2023-11-08 08:04:52 浏览: 71
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
5星 · 资源好评率100%
cv2.resize函数可以用来调整图像的大小,其中可以通过指定插值方法来实现不同的调整效果。如果想要在调整图像大小时保持图像比例不变,可以将要调整的长边或短边指定为目标大小,然后按比例缩放另一边。如果想要在调整图像大小时填充短边,可以使用cv2.copyMakeBorder函数来实现。
具体实现方法如下:
```python
import cv2
img = cv2.imread('test.jpg')
h, w, _ = img.shape
size = 800
if h > w:
new_h = size
new_w = int(w * size / h)
else:
new_w = size
new_h = int(h * size / w)
resized_img = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR)
if new_h > new_w:
top = bottom = 0
left = right = (new_h - new_w) // 2
else:
left = right = 0
top = bottom = (new_w - new_h) // 2
padded_img = cv2.copyMakeBorder(resized_img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=[0, 0, 0])
```
上述代码中,首先读入原始图像,然后根据图像长宽比例和目标大小计算出新的长宽大小,使用cv2.resize函数进行缩放。接着根据新的长宽大小和目标大小的关系,计算出需要填充的边界大小,使用cv2.copyMakeBorder函数进行填充。
阅读全文