大きくなったら大蛇に

Python始めたての初心者による学習ブログです

ステレオグラムを作ろう_応用編1(背景を変更)

■好きな画像でステレオグラムを作りたい

●好きな画像で背景を作る

基本編ではランダムドットノイズを背景に使用していましたが、見ていて楽しいものを背景にしたいので、自分で用意した画像を背景にしてステレオグラムを作っていきます。

 

使用する画像はこちら。スイカジュースの写真です。



基本編1で使ったランダムドットノイズ作成のコードを書き換えてみました。

import numpy as np
import matplotlib.pyplot as plt
import cv2

pattern = cv2.imread('画像のPath/ファイル名.jpg')
plt.imshow(pattern, cmap= "gray")

グレースケールに変えたつもりでいるのに、グレースケールにならない不思議。

 

紫色になったのはcv2で画像を読み込んでいるので色の並びが逆になっているせいだとわかっていますが(変換をさぼりました)。。。実に気持ち悪い色になったものだ。

matplotlibでグレースケールにしようとしても効かなくて、cv2.cvtColorの方でグレースケールにしないと変わらないのかな?

 

ならこれは?

cv2でグレースケール化してmatplotlibの方のグレースケール化を削除してみました。

pattern = cv2.imread('画像のPath')
pattern = cv2.cvtColor(pattern, cv2.COLOR_BGR2GRAY)
plt.imshow(pattern)

わぁ。悪化した。

 

 

ならば!

cv2でグレースケール化もmatplotlibの方のグレースケール化も入れてみました。

pattern = cv2.imread('画像のPath')
pattern = cv2.cvtColor(pattern, cv2.COLOR_BGR2GRAY)
plt.imshow(pattern , cmap='gray')

 ようやく成功です。

グレースケールの画像を表示させるだけでずいぶん苦労しましたが、以降のコードに変更はありません。出来上がった画像はこちら。↓

あらら。写真の縦128×横68はちょっと大きかったかもしれません。
でもちゃんと円が見えます。

 

見え方が変わるのかと思い、画像サイズを変えてみました。

さっきの半分縦64×横34です

 見えますが、あまりに小さいと背景の画像が何なのか分からないので面白くなくなってしまいそうです。

 

これは画像によって微調整が必要ですね。

 

次は深度マップを好きな画像に変えてみたいと思います。