[OpenCV]カラー画像を分割してちょめちょめ.

いろいろやっているOpenCV関係の続き.白黒画像だとあまり面白くないけれども,カラー画像を選べた方が良いかなぁという感じ.実際OpenCVではマルチチャンネル的なデータによってカラー画像を利用出来るので,取ってきて使ってみよう.利用する元の画像は何度も利用しているsink.jpg.



import cv, sys
src = cv.LoadImage('sink.jpg', cv.CV_LOAD_IMAGE_COLOR)
if nor src: sys.exit(-1)

# マルチチャンネル用の画像を生成して分割する
# dst[0] - Blue, dst[1] - Green, dst[2] - Red が格納される
sch = src.channels
dst = [None, None, None, None]
for i in range(sch): dst[i] = cv.CreateImage((src.width, src.height), src.depth, 1)
cv.Split(src,dst[0], dst[1], dst[2], dst[3])

# それぞれ画像を生成してみる
# (B,G,R), (B,R,G), (G,B,R), (G,R,B), (R,G,B), (R,B,G)
# 例えば(B,G,R)でmergeする
t = cv.CreateImage((src.width, src.height), src.depth, 3)
m = cv.Merge(dst[0], dst[1], dst[2], dst[3], t)
cv.SaveImage('t1.png', t)

こうして6つの組合せ毎に画像を再合成して作ると,(B,G,R)以外では元画像とは別の色合いの画像になるはず.結果は次のように.順番は(B,G,R), (B,R,G), (G,B,R), (G,R,B), (R,G,B), (R,B,G)の順番で描いた.sink.jpgちゃん大変身.





これでカラー画像も使えるようになったね.

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です