numpyで指定の位置に画像を貼り付け

python コンピュータ
python

画像の一部を別の画像に置き換える方法を調べていてnumpyで画像を貼り付ける方法を試してみました。

import numpy as np

dst = np.full(shape=(5,6), fill_value=255, dtype='uint8')
src = np.zeros(shape=(3,4), dtype='uint8')

x = 0
y = 2
h = src.shape[0]
w = src.shape[1]

dst[y:y+h,x:x+w] = src
print(dst)

結果

[[255 255 255 255 255 255]
 [255 255 255 255 255 255]
 [  0   0   0   0 255 255]
 [  0   0   0   0 255 255]
 [  0   0   0   0 255 255]]

解説

dst = np.full(shape=(5,6), fill_value=255, dtype='uint8')
src = np.zeros(shape=(3,4), dtype='uint8')

dstは幅6高さ5値が255(グレースケールで白)のndarrayオブジェクト(画像)。
srcは幅4高さ3値が0(グレースケールで黒)のndarrayオブジェクト(画像)。

x = 0
y = 2

貼り付け位置x座標は0、y座標は2

h = src.shape[0]
w = src.shape[1]

h(高さ)とw(幅)はsrc.shapeからsrcの幅と高さを取得。

dst[y:y+h,x:x+w] = src

dstのx:0y:2の位置にsrcを貼り付ける。

感想
numpyのスライスは便利。
今回のサンプルはsrcをそのまま貼り付けましたが、src側もスライスで任意の矩形を指定することも出来ると思われます。
Python画像を中心から指定サイズで切り出し【OpenCV・Numpy】
多分Numpyの機能だとは思うのですが、imgで切り出しをしています。 #!/usr/bin/env python3 # coding: utf8 import cv2 import numpy as np import os, glob ...

コメント