MRが楽しい

MRやVRについて学習したことを書き残す

pythonでOpenCVを利用して画像を合成して保存する

本日は python の技術調査と環境構築枠です。
pythonOpenCVを利用して画像を合成して保存する方法を記事にします。
以下の環境構築手順などで pip をインストール済みの環境であることが前提となります。
bluebirdofoz.hatenablog.com

opencv-pythonのインストール

pip をインストール済みの環境であれば、以下のコマンドで opencv-python がインストール可能です。

pip install opencv-python

VisualStudioCode のコンソールで実行してみます。
f:id:bluebirdofoz:20190712125029j:plain

以下の通り、Successfully installed が表示されれば成功です。
opencv-python のほか、numpy ライブラリも同時にインストールされます。
f:id:bluebirdofoz:20190712125041j:plain

2つの画像を合成して保存する

早速、opencv-python を使って2つの画像を合成して保存するスクリプトを作成しました。
・image_synthesis.py

# cv2インポート(画像処理のため)
import cv2

# 画像を合成する(アルファブレンド)
# 引数   arg_synthesisfiledir:結合画像ディレクトリ
#        arg_imagefilename01:合成元画像名1
#        arg_imagefilename02:合成元画像名2
#        arg_synthesisfilename:合成画像ファイル名
# 戻り値
def image_synthesis_addWeighted(
  arg_synthesisfiledir='D:\\WORK\\Texture',
  arg_imagefilename01='NewTexture01.png',
  arg_imagefilename02='NewTexture02.png',
  arg_synthesisfilename='SynTexture.png'):
  # 画像のファイルパスを取得する
  imagefilepath01 = arg_synthesisfiledir + '\\' + arg_imagefilename01
  imagefilepath02 = arg_synthesisfiledir + '\\' + arg_imagefilename02
  synthesisfilepath = arg_synthesisfiledir + '\\' + arg_synthesisfilename
  # 画像を読み込む
  image01 = cv2.imread(imagefilepath01)
  image02 = cv2.imread(imagefilepath02)
  # 画像を合成する
  synthesis = cv2.addWeighted(src1=image01,alpha=1.0,src2=image02,beta=1.00,gamma=0)
  # 合成した画像を保存する
  cv2.imwrite(synthesisfilepath, synthesis)
  return

# 実行例
image_synthesis_addWeighted(
  arg_synthesisfiledir='D:\\Python\\ImageSynthesis\\SampleImage',
  arg_imagefilename01='00_T_image.png',
  arg_imagefilename02='01_E_Image.png',
  arg_synthesisfilename='SynTexture.png'):

スクリプトを実行してみます。
f:id:bluebirdofoz:20190712125301j:plain

以下の通り、指定ディレクトリの2つの画像が合成されて新しい画像が出力されました。
f:id:bluebirdofoz:20190712125310j:plain
先に指定した画像に、後に指定した画像が重なる形で合成されます。
実行例では後に指定した画像の背景を透過色にしています。