「プログラムで画像を自動的に結合したい」
「Pythonで大量の画像を一気に結合したい」
このような場合には、この記事が参考になります。
この記事では、OpenCVによる画像の結合について解説しています。
本記事の内容
- OpenCVによる画像の結合
- 横方向に画像を結合する
- 縦方向に画像を結合する
それでは、上記に沿って解説していきます。
OpenCVによる画像の結合
Pythonによる画像の結合は、OpenCVを使えば簡単です。
OpenCVについては、次の記事で説明しています。
ここで、プログラムによる画像結合について整理しておきましょう。
プログラムを使う以上、大量に画像を結合したいという需要があるはずです。
そうでなければ、画像編集ツールを使えば済みます。
わざわざ、Pythonを使って画像結合を行う必要性がありません。
また、プログラムで画像結合を行う場合、画像サイズが同じである必要があります。
もちろん、プログラムで画像サイズを同じサイズに調整することは可能です。
しかし、そこまでしてPythonで画像結合する意味があるのでしょうか?
通常は、プログラムから出力した大量の均一な画像が結合対象になるはずです。
だからこそ、それらの画像をプログラムで結合したくなります。
そうでなければ、画像編集ソフトでチマチマとやればいいだけです。
よって、この記事ではすべて同一サイズの画像を対象とします。
そうじゃないと、画像サイズの変更についても説明しないといけません。
(※同一サイズの画像が前提条件であるべきだという考えです)
このような処理は、能書きを垂れるよりは実際に手を動かしましょう。
手を動かして、実際に動作を確認するのが一番です。
では、早速画像を結合していきましょう。
まずは、横方向に画像を結合していきます。
横方向に画像を結合する
用意した画像は、次の2つです。
1.jpg
2.jpg
この2枚の画像を横方向に結合します。
そのコードは、以下。
import cv2 # 画像の保存先となるリスト形式の変数 list_img = [] # 画像を読み込む img_1 = cv2.imread('1.jpg') img_2 = cv2.imread('2.jpg') # 読み込んだ画像をリストに追加 list_img.append(img_1) list_img.append(img_2) # 逆にしたい場合 #list_img.reverse() # 画像を横方向に連結 img_join = cv2.hconcat(list_img) # 結合した画像を保存 cv2.imwrite('img_join.png', img_join)
上記を実行すると、次の画像が作成されます。
逆にしたい場合は、次のようにコメントを外します。
# 逆にしたい場合 list_img.reverse()
この状態で実行した結果は、次の画像となります。
簡単ですね。
では、次は縦方向に結合しましょう。
縦方向に画像を結合する
先ほどの横方向に結合するコードの一部を変更するだけです。
その一部は、次のコードです。
# 画像を横方向に連結 img_join = cv2.hconcat(list_img)
これを次のように変更します。
# 画像を縦方向に連結 img_join = cv2.vconcat(list_img)
変更して実行した結果はの画像は、以下。
これも逆にしたければ、次のコードを有効にするだけです。
# 逆にしたい場合 list_img.reverse()
縦方向も全く問題ありませんね。
画像サイズだけ統一すれば、何も難しいところはないでしょう。
以上、OpenCVによる画像の結合(連結)について説明しました。