画像を連結する
OpenCVで画像を連結し一つの画像にします。縦に連結する場合はcv2.vconcat関数を用います。この場合画像の横幅が等しくないとエラーになります。また横に連結する場合はcv2.hconcat関数を用います。この場合画像の高さが等しくないとエラーになります。
やること
- ファイル名を指定して2つの画像ファイルを読み出す
- 2つの画像ファイルを連結する
- 連結した画像を別ウィンドウで表示する
- キー入力で表示用ウィンドウを破棄し終了
使った関数
- cv2.imread : 画像ファイルの読み出し
- cv2.vconcat : 画像を縦に連結する
- cv2.hconcat : 画像を横に連結する
- cv2.imshow : 画像を別ウィンドウに表示する
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名"coffee.jpg"、"donuts.jpg"で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。 縦に連結する場合は2つの画像の横幅、横に連結する場合は2つの画像の高さが等しい必要があります。用いた2つの画像は縦横のサイズが同じものです。
コード
cv2.vconcat : 画像を縦に連結する場合
import cv2 #OpenCVのインポート fname_1 = "coffee.jpg" #1つ目の画像ファイル名 fname_2 = "donuts.jpg" #2つ目の画像ファイル名 img_1 = cv2.imread(fname_1) #画つ目の像を読み出しオブジェクトimg_1に代入。画像サイズは400x267px img_2 = cv2.imread(fname_2) #画つ目の像を読み出しオブジェクトimg_2に代入。画像サイズは400x267px img_vconcat = cv2.vconcat([img_1, img_2]) #オブジェクトimg_1、img_2を縦に連結しオブジェクトimg_vconcatに代入 cv2.imshow("vconcat",img_vconcat) #別ウィンドウを開き(ウィンドウ名 "vconcat)オブジェクトimg_vconcatを表示 cv2.waitKey(0) #キー入力待ち cv2.destroyAllWindows() #ウインドウを閉じる
実行結果
別ウィンドウが開き、縦に連結した画像が表示されます
コード
cv2.hconcat : 画像を横に連結する場合
import cv2 #OpenCVのインポート fname_1 = "coffee.jpg" #1つ目の画像ファイル名 fname_2 = "donuts.jpg" #2つ目の画像ファイル名 img_1 = cv2.imread(fname_1) #画つ目の像を読み出しオブジェクトimg_1に代入。画像サイズは400x267px img_2 = cv2.imread(fname_2) #画つ目の像を読み出しオブジェクトimg_2に代入。画像サイズは400x267px img_hconcat = cv2.hconcat([img_1, img_2]) #オブジェクトimg_1、img_2を縦に連結しオブジェクトimg_hconcatに代入 cv2.imshow("hconcat",img_hconcat) #別ウィンドウを開き(ウィンドウ名 "hconcat)オブジェクトimg_hconcatを表示 cv2.waitKey(0) #キー入力待ち cv2.destroyAllWindows() #ウインドウを閉じる
実行結果
以下のサイトを参考にさせていただきました
Pythonの文法メモ > 【OpenCV】画像の連結
note.nkmk.me >> Python, OpenCVで画像を縦・横に連結 (hconcat, vconcat, np.tile)