Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

画像を連結する

OpenCVで画像を連結し一つの画像にします。縦に連結する場合はcv2.vconcat関数を用います。この場合画像の横幅が等しくないとエラーになります。また横に連結する場合はcv2.hconcat関数を用います。この場合画像の高さが等しくないとエラーになります。

やること
  • ファイル名を指定して2つの画像ファイルを読み出す
  • 2つの画像ファイルを連結する
  • 連結した画像を別ウィンドウで表示する
  • キー入力で表示用ウィンドウを破棄し終了
使った関数
  • cv2.imread : 画像ファイルの読み出し
  • cv2.vconcat : 画像を縦に連結する
  • cv2.hconcat : 画像を横に連結する
  • cv2.imshow : 画像を別ウィンドウに表示する
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名"coffee.jpg"、"donuts.jpg"で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。

f:id:T_A_T:20190226223525j:plain
coffee.jpg
f:id:T_A_T:20190226223535j:plain
donuts.jpg
縦に連結する場合は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() #ウインドウを閉じる

実行結果

別ウィンドウが開き、縦に連結した画像が表示されます

f:id:T_A_T:20190226224217p:plain
縦に連結した画像

コード

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() #ウインドウを閉じる

実行結果

f:id:T_A_T:20190226224519p:plain
横に連結した画像

以下のサイトを参考にさせていただきました

Pythonの文法メモ > 【OpenCV】画像の連結
note.nkmk.me >> Python, OpenCVで画像を縦・横に連結 (hconcat, vconcat, np.tile)

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村