python3 + cv2のwarpAffineで画像を動かした時の、背景の塗りつぶし方

python3.6 と cv2で画像の水増し(augmentation)をしたいときに、背景を白で塗りつぶすのがすぐに検索で見つからなかったからノートを書きます。

#augmentation.py
import cv2
import numpy as np

img = cv2.imread('trainingData/balls/ball1.jpg', 1)
rows,cols,z = img.shape
for i in range(49):
    M = np.float32([[1,0,-2*(i+1)],[0,1,0]])
    new = cv2.warpAffine(img,M,(cols,rows),borderValue=(255, 255, 255))

    cv2.imwrite('trainingData/balls/ball'+str(i+2)+'.jpg', new)

warpAffineのborderValueに色をRGBで指定して移動した後の埋め合わせを決めます。

色指定だけじゃなく、borderModeを別途指定することで、いろんな埋め合わせができるらしい。cv2 borderModeで調べてみてください。



この記事が気に入ったらサポートをしてみませんか?