Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【python3, opencv】読み込んだ画像に黒の余白を追加したい

2枚の画像を比較する際に、解像度が違うことがある。
アスペクト比が同じであれば、単純にresizeして縮小・拡大すればいいが、アスペクト比が違う場合は余白を追加してそれを揃える必要がある

import cv2

img_orig = cv2.imread(fname, cv2.IMREAD_UNCHANGED)
img_gige = img_orig.copy()
height_gige, width_gige = img_orig.shape

fnameというファイル名の画像は読み込む
ここで扱う画像は、白黒だと考えている。カラーの場合は最後のshapeはもう1つ要素が増えているはず

これで縦横の大きさを取得する


img_gigeという画像に上下にmargin_height、左右にmargin_widthを追加する。
cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value)
というのが使い方

■ 参考 : OpenCVでzero-paddingを1行でする方法


valueというのは追加する余白の色、ここでは黒なので[0, 0, 0]にしているが白とか赤にすることもできる

# 余白を上下に追加する

img_gige2=cv2.copyMakeBorder(img_gige, margin_height, margin_height, margin_width, margin_width, cv2.BORDER_CONSTANT, value=[0, 0, 0])

ランキング参加中です

↓クリックしていただけると嬉しいです〜