前回投稿でやった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)

 

 

東京湾クルーズ 東京湾クルーズ 東京湾クルーズ


関連がありそうな記事