前回投稿でやったOpenCV(Python)の画像連結を少し応用。高さが異なる画像をリサイズして結合させてみた。これもめっちゃ簡単にできて感動。
サンプル画像。cruise_001.JPGの高さは1200px、cruise_002.JPGの高さは1190pxである。
cruise_001.JPG
cruise_002.JPG
エラー処理も何もないが、取り急ぎコードはこんなんで。ここでは小さい方のcruise_002に合わせてcruise_001をリサイズして結合する。ついでに読込み画像ファイルと出力ファイルを引数で指定するようにした。
resize_horizontal_join.py
import sys
import cv2
import numpy as np
args = sys.argv
# 画像ファイル名定義(第一、第二引数)
f1 = args[1]
f2 = args[2]
#Join出力ファイル名(第三引数)
outfile = args[3]
#画像読み込み
img1 = cv2.imread(f1)
img2 = cv2.imread(f2)
#画像の高さを揃える関数
def hconcat_resize_min(im_list, interpolation=cv2.INTER_CUBIC):
h_min = min(im.shape[0] for im in im_list)
im_list_resize = [cv2.resize(im, (int(im.shape[1] * h_min / im.shape[0]), h_min), interpolation=interpolation)
for im in im_list]
return cv2.hconcat(im_list_resize)
#画像を結合して出力
img_h_resize = hconcat_resize_min([img1, img2])
cv2.imwrite(outfile, img_h_resize)
実行コマンド。
$ python3 resize_horizontal_join.py cruise_001.JPG cruise_002.JPG cruise_join.JPG
すると、…おぉ、あっさりやってくれた。画像の高さはcruise_002に合わせたため、1190pxになっている。(投稿時は手動で縮小)
cruise_join.JPG
やってることは単純なんだが…、楽しい!こんな気持ち久しぶりだな〜
参考
Python, OpenCVで画像を縦・横に連結 (hconcat, vconcat, np.tile)