Python : 画像を縦、横に連結(vconcat,hconcat)

PythonOpencvを使った、画像の縦横の連結方法についてです。

 

最近、処理画像の報告用にプログラムを作っている際に、

通常画像と検出画像を並べて動画にするとやりやすいかな~と思い、

使っているのもあり、載せています。

プログラムの下記方はopencvのvconcat,hconcatを使います。

 

注意事項としては、画像は必ず、同じサイズ、タイプである必要があります。

今回はサイズは(225,400,3)

タイプはunit8

これが違うとつなげられないのでご注意ください。

 

プログラムはまずopencvを読み込みます。

import v2

画像を読み込みます。

いつものlenaさんを使います。

frame = cv2.imread('lena.jpg')

f:id:Kangkang1981:20200304232218j:plain

 

この後、連結をします。

縦に連結します。

縦はvconcatにてつなげます。

カッコのなかに[]がはいるのを忘れないようにしてください。

frame_v=cv2.vconcat([画像1,画像2,画像3,・・・,画像10])

f:id:Kangkang1981:20200513161508j:plain



横はhconcatにてつなげます。
frame_h = cv2.hconcat([画像1,画像2,画像3,・・・,画像10])

f:id:Kangkang1981:20200513161527j:plain

vにすると画像が縦につながり、hにすると横につながっていくので、

vは幅方向を合わせる、hは高さ方向を合わせるという意味なのですかね。

 

プログラムは下記です。

#opencvをインポートします。
import cv2 

#画像を読み込む
frame = cv2.imread('lena.jpg')

#縦に連結します。
frame_v = cv2.vconcat([frame,frame])
#横に連結します。
frame_h = cv2.hconcat([frame,frame,frame])

#画像を書き込みます
cv2.imwrite('vconcat.jpg',frame_v)
cv2.imwrite('hconcat.jpg',frame_h)

今までにpythonについて書いた記事はここにリンクを貼ってあります。

興味があればぜひご覧ください。