1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

画像の拡大縮小をしないで、画像サイズを合わせる

Last updated at Posted at 2023-03-26

OpenCVなどで2つの画像の重ね合わせて比較したい場合、1ピクセルでも画像サイズが違うとエラーになります。

リサイズして合わせる方法がありますが、画像自体を拡大または縮小しないで重ね合わせしたい場合があります。

そこで、画像自体の拡大縮小をしないで、画像サイズをそろえるプログラムを作ることにしました。

例えば、大きいサイズの画像(画像1)と小さいサイズの画像(画像2)があり、

画像1
hasuhana.jpg

画像2
hasuhana2.jpg

画像1のサイズに合わせるよう、画像2に黒い余白を追加します。
hasuhana_trim.jpg

逆に、画像1のほうが小さい場合は、画像2をトリミングします。

import cv2
import numpy as np

#img_2の画像を、img_1の画像サイズに拡大縮小なしに合わせる。
#2つの画像の読み込み。
img_1=cv2.imread('img_1.jpg') #ファイル名やパスは変更してください。
img_2=cv2.imread('img_2.jpg')

#画像サイズ(縦、横)の取り込み
h_1, w_1, _=img_1.shape
h_2, w_2, _=img_2.shape

#縦、横サイズ、それぞれ大きい方を見つける
if h_1>h_2:
    h_max=h_1
else:
    h_max=h_2
if w_1>w_2:
    w_max=w_1
else:
    w_max=w_2

#画像の輝度がすべて0になっている最大サイズの真っ黒のベース画像を作る    
img_zero=np.zeros((h_max, w_max, 3), dtype=np.uint8)

#黒のベース画像に、img_2を重ねる
img_zero[0:h_2,0:w_2]=img_2

#ベース画像をimg_1と同じサイズにトリミング
img_2_trim=img_zero[0:h_1, 0:w_1]

#画像の確認
cv2.imshow('img_1', img_1)
cv2.imshow('img_2', img_2)
cv2.imshow('img_2_trim', img_2_trim)

cv2.waitKey(0)
cv2.destroyAllWindows()
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?