Python : gray画像(1ch画像)を3chへ
たまにですが、白黒に処理した画像とカラー画像を一緒に連結して
ビデオにしたい!とか合成したいということがありますが、
グレイ画像、cannyでのエッジ抽出した白黒画像は1chになるため、
カラー画像(3ch)とhconcatで画像を連結しようとすると、
下記みたいなエラーが出てしまいます。
※hconcatについては下記を参照ください
この場合どうするか?となると、
簡単なのは、白黒画像を1chから3chに変更することです。
書き方としてはこれです。(numpy)を使います。
canny_3ch = np.stack((canny_gray,)*3, -1)
こうするとlenaさんをgray→canny→3chに変更して連結すると
こんな感じで、一つの画像として連結することができます。
プログラムは下記になります。
#opencv,nupyをインポートします。
import cv2
import numpy as np
#画像を読み込む
frame = cv2.imread('lena.jpg')
#gray画像を作成
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#エッジ抽出
canny_gray = cv2.Canny(gray,100,200)
#エッジ抽出の画像を3chへ
canny_3ch = np.stack((canny_gray,)*3, -1)
#横に連結します。
frame_h = cv2.hconcat([frame,canny_3ch])
#画像を書き込みます
cv2.imwrite('frame_canny.jpg',frame_h)
今までにpythonについて書いた記事はここにリンクを貼ってあります。
興味があればぜひご覧ください。