画像の一部を別の画像に置き換える方法を調べていて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側もスライスで任意の矩形を指定することも出来ると思われます。
numpyのスライスは便利。
今回のサンプルはsrcをそのまま貼り付けましたが、src側もスライスで任意の矩形を指定することも出来ると思われます。
Python画像を中心から指定サイズで切り出し【OpenCV・Numpy】
多分Numpyの機能だとは思うのですが、imgで切り出しをしています。 #!/usr/bin/env python3 # coding: utf8 import cv2 import numpy as np import os, glob ...
コメント