PythonとOpenCVで実現する画像の加算とブレンディング
画像処理において、画像は行列(マトリクス)として扱われます。行列の中身は画像の種類によって異なり、二値画像(0と1)、グレースケール画像(0〜255)、RGB画像(各チャンネル0〜255)などがあります。したがって、2枚の画像を「加算する」ということは、対応する位置にある画素同士の行列を単純に足し合わせることを意味します。
OpenCVライブラリには、画像を加算するための関数 cv2.add() が用意されています。ただし、画像の加算を行う際は、2枚の画像のサイズ(幅と高さ)が同一である必要がある点に注意してください。また、cv2.add() は飽和演算(サチュレーション)を行うため、計算結果が255を超えた場合は255にクリップされます。NumPyの通常の加算とはこの点が異なります。
2枚の画像の加算
以下は、cv2.add() を使用して2枚の画像を加算する基本的なコード例です。
import cv2
# 1枚目の画像を読み込む
my_firstpic = cv2.imread('C:/Users/TP/Pictures/west bengal/bishnupur/mqdefaultILPT6GSR.jpg', 1)
cv2.imshow('image', my_firstpic)
# 2枚目の画像を読み込む
my_secpic = cv2.imread('C:/Users/Satyajit/Pictures/west bengal/bishnupur/pp.jpg', 1)
# 2枚の画像を加算する
img = cv2.add(my_firstpic, my_secpic)
cv2.waitKey(0)
cv2.destroyAllWindows()
出力結果

2枚の画像のブレンディング
2枚の画像を滑らかに合成したい場合には、cv2.addWeighted() 関数を使用します。この関数は重み付き加算を行い、次の形式で呼び出します。
cv2.addWeighted(画像1, 重み1, 画像2, 重み2, ガンマ値)
重み1と重み2の合計が1になるように設定すると、明るさが崩れない自然なブレンド結果が得られます。最後の引数であるガンマ値は、すべての画素に一様に加算されるスカラー値です。
サンプルコード
以下の例では、1枚目の画像に重み0.3、2枚目の画像に重み0.7を割り当ててブレンドしています。
import cv2
# 1枚目の画像を読み込む
My_first = cv2.imread('C:/Users/TP/Pictures/west bengal/bishnupur/mqdefaultILPT6GSR.jpg', 1)
# 2枚目の画像を読み込む
My_second = cv2.imread('C:/Users/TP/Pictures/west bengal/bishnupur/pp.jpg', 1)
# 重み0.3と0.7で画像をブレンドする
My_img = cv2.addWeighted(My_first, 0.3, My_second, 0.7, 0)
# 結果を表示する
cv2.imshow('image', My_img)
# キー入力を待機する
cv2.waitKey(0)
# 開いているすべてのウィンドウを閉じる
cv2.destroyAllWindows()
出力結果

-
PythonとOpenCVを使って動画を逆再生(リバース再生)する方法
OpenCVは「Open Source Computer Vision(オープンソース・コンピュータビジョン)」の略称です。この強力なライブラリを活用することで、画像や動画に対してさまざまな操作を実行できます。OpenCVの主な応用分野顔認識システムモーショントラッキング(動体追跡)人工ニューラルネットワーク深層ニューラルネットワーク動画ストリーミング などOpenCVのインストール方法Windows環境では、以下のコマンドでインストールできます。pip install opencv-pythonLinux環境の場合は、次のコマンドを使用します。sudo apt-get install pyt
-
【Python×OpenCV】画像の収縮(エロージョン)と膨張(ダイレーション)の基本を解説
本記事では、PythonのOpenCVモジュールを使って、エロージョン(収縮)やダイレーション(膨張)といったモルフォロジー演算(形態学的処理)を実行する方法を解説します。 OpenCVはコンピュータビジョン向けに設計されたオープンソースのライブラリで、もともとはIntelによって開発されました。BSDライセンスのもとで誰でも無料で利用できます。 OpenCVの機能を使うには、まずpipでインストールしておきましょう。 sudo pip3 install opencv-python エロージョン(収縮)とは?仕組みを解説 エロージョンは、前景オブジェクトの境界を削り取っていく処理です。画像内の