画像を横に連結したい事情があり、OpenCVでできそうだなと軽く調べたら、すごく簡単にできた。

 

こんな画像があるとする。これらを横に繋げたい。

サグラダファミリア BCN_001.JPG

 

サグラダファミリア BCN_002.JPG

 

コードはめっちゃ単純だけどこんなんで。

opencv_horizontal_join.py

import cv2
import numpy as np

#画像読み込み
img1 = cv2.imread('BCN_001.JPG')
img2 = cv2.imread('BCN_002.JPG')

#画像を横に連結
img_h = cv2.hconcat([img1, img2])
cv2.imwrite('BCN_join.JPG', img_h)

 

画像を格納したディレクトリでコードを実行すると、同じディレクトリに結合された画像(BCN_join.JPG)が出力される。

 

サグラダファミリア BCN_join.JPG

 

 

画像はもちろん縦に連結したり、タイル状に並べることもできる。縦に結合する場合はcv2.vconcat()を使う。

それから今回はサイズが最初から揃っている前提でやっているが、異なるサイズの画像をリサイズして実行させたりもできる。詳細は参考リンクに。あとファイル名は引数で処理したいが、どうにでもなるのでまた今度。

 

参考
Python, OpenCVで画像を縦・横に連結 (hconcat, vconcat, np.tile)

 

 

いやはや、どうってことない処理だけどこれがやりたかったんだよ、ツールとか入れたくなかったから、簡単にできて本当によかった。(大昔にImageMagickで散々やってたけど)

 

BCN Cafe BCN Cafe


関連がありそうな記事