加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 为图像添加填充以使它们成为相同的形状

发布时间:2020-12-20 11:59:27 所属栏目:Python 来源:网络整理
导读:我有一组不同大小的图像(45,50,3),(69,34,(34,98,3).我想为这些图像添加填充,如下所示: 取整个图像的最大宽度和长度,然后将图像放入该尺寸 import osimport globimport cv2input_path="/home/images"os.chdir(indput_path)images=glob.glob("*.png")Length=
我有一组不同大小的图像(45,50,3),(69,34,(34,98,3).我想为这些图像添加填充,如下所示:

取整个图像的最大宽度和长度,然后将图像放入该尺寸

import os
import glob
import cv2

input_path="/home/images"
os.chdir(indput_path)
images=glob.glob("*.png")
Length=[]
Width=[]
for img in images:
    img=cv2.imread(img)
    width,length=img.shape[0:2]
    Length.append(length)
    Width.append(width)
W=max(Width)
L=max(Length)

如何在opencv中添加填充,以便所有图像都具有相同的大小?在示例中l给出的图像将得到(69,3)的形状

EDIT1:

假设我有一个形状(49,39,3)想要转换为(80,60,3)的图像:
input_image维度:{width = 49,heigh = 39}

所以top = height / 2 = 19.5

bottom = height / 2 = 19.5

左=宽度/ 2 = 24.5

右=宽度/ 2 = 24.5

output_image维度:{width = 80,height = 60}

顶= 30

底= 30

左= 40

右= 40

import cv2
import numpy as np
from matplotlib import pyplot as plt
BLUE = [255,255,255]
img1 = cv2.imread('/image.png')
constant=cv2.copyMakeBorder(img1,30,40,cv2.BORDER_CONSTANT,value=BLUE)
plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
plt.subplot(233),plt.imshow(constant,plt.title('CONSTANT')
plt.show()
print(constant.shape)


(109,119,3)

但它应该是(80,3)

EDIT2:

有效

constant= cv2.copyMakeBorder(img1,15,16,10,11,value=BLUE)

解决方法

您可以使用:

image = cv2.copyMakeBorder( src,top,bottom,left,right,borderType)

其中src是你的源图像,botto,right是图像周围的填充.

您可以使用max(sizes) – while循环中图像的大小值来为每个图像添加填充.
bordertype可以是以下之一:

> cv2.BORDER_CONSTANT
> cv2.BORDER_REFLECT
> cv2.BORDER_REFLECT_101
> cv2.BORDER_DEFAULT
> cv2.BORDER_REPLICATE
> cv2.BORDER_WRAP

copyMakeBorder tutorial

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读