lは異なるサイズの画像のセットを持っています(45,50,3), (69,34,3), (34,98,3)
。 lは次のようにこれらのイメージにパディングを追加したい:画像にパディングを追加して同じ形状にします
は、画像全体の最大幅と長さを取り、その大きさに画像を入れ
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)
すべてのように、どのようにlはOpenCVのにパディングを追加することができますイメージは同じサイズになりますか?例では、Lは、画像が(69,98,3)
EDIT1:
ましょう仮定するリットルの形状を取得します与えた形状(49,39,3)lは(80,60,3)に変換したいということでイメージを持っています。 input_image寸法:{幅= 49、heigh = 39}
そうトップ=高さ/ 2 = 19.5
底=高さ/ 2 = 19.5
左=幅/ 2 = 24.5
右=幅/ 2 = 24.5
output_image寸法:{幅= 80、高さ= 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,30,40,40,cv2.BORDER_CONSTANT,value=BLUE)
plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
plt.subplot(233),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.show()
print(constant.shape)
(109, 119, 3)
ただし、(80,60,3)
EDIT2:
それはあなたが使用することができます
constant= cv2.copyMakeBorder(img1,15,16,10,11,cv2.BORDER_CONSTANT,value=BLUE)
このリンクをチェック:https://stackoverflow.com/questions/36044061/add-padding-to-object-in-4-channel-image – zindarod
@Zindarod私は白黒画像を持っていますピクセルは0か255のどちらかです。画像の私のキャラクターのほとんどは黒で書かれています。だから、白いピクセルのパディングが必要です。しかし、私は文字が白いので、黒いピクセルのパディングが必要な画像もいくつか持っています。私は白と黒のピクセルパッディングを追加することを検出するためにオープンcvのトリックがある場合、さまよっています – vincent
cv2.resize(img、(69、98)、interpolation = cv2.INTER_NEAREST)を使用するとどうなりますか?画像。すべての画像が中央に配置されます。文字は中心に書き込まれます。 – vincent