大きくなったら大蛇に

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

ステレオグラムの作り方_基本編2(深度マップを作る)

Pythonステレオグラムを作りたい

 ”ステレオグラムの作り方_基本編1”の続きになります。

 

②3Dで見せたい画像(深度マップ)を作る

次は浮き出てくる方の画像を作りましょう。

参考から引っ張ってきたコードを実行すると縦400ピクセル×横600ピクセルの白い円が中心に描かれた画像が作られます。
<参考サイト>
 

def make_depthmap(shape=(400, 600)):
    depthmap = np.zeros(shape, dtype=np.float64)
    cv2.circle(depthmap, (int(shape[1]/2), int(shape[0]/2)), 100, (255 ,255, 255), -1)
    return depthmap
    
depthmap = make_depthmap()
plt.imshow(depthmap, cmap='gray')

 

これは黒地に白の模様が入った画像なら何でもいいのかな?

コードを見ていきましょう。

1行目、”make_depthmap”という名前で何かしらの関数を作ってますね。
関数の定義と実行は以下のように書かれます。
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
関数の定義
 def 関数名(引数1, 引数2, 引数3, …) :
    処理内容1
    処理内容2      
       …
    return 戻り値
 
関数の実行
  関数名(引数1, 引数2, 引数3, …)
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

 

2行目の”np.zeros”は以下の働きをする関数です。

<np.zeros(shape, dtype=np.float64)>
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
shape:サイズ(ここでは画像サイズ)
dtype:データの型(デフォルトfloat64。理解できないため受け入れるだけ)
戻り値:要素がすべてゼロで返ってくる
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

変数”depthmap”が深度マップの情報になります。depthmapの画像サイズと

どんなデータが入るかを決め、ゼロで初期化するということをしているんですね。

全部ゼロってことは画像は黒で塗りつぶされているってことかな。

 

3行目の”cv2.circle”では円を作っていますね。

<cv2.circle(img, center, radius, color, thickness, lineType, shift)>

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

img         :円を描く対象となる画像

center       :描画する円の中心座標

radius       :描画する円の半径

color           :円の線の色

thickness :円の線の太さ

lineType      :描画アルゴリズム

shift      :謎

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

今の場合だと、

 第1引数img :depthmap

 第2引数center:(int(shape[1]/2), int(shape[0]/2))。

        depthmapの画像サイズが横600×縦400なので、縦横をそれぞれ

        2で割って中心座標を(300,200)にしてますね。

 第3引数radius:100ピクセル

 第4引数color:(255, 255, 255)で青・緑・赤のデータがMAXなので白

   第5引数thikness:-1 。マイナス設定だと円の内部を塗りつぶす

 

ということで、全体が真っ黒なdepthmap画像の中心に100 ピクセルの白く塗りつぶされた円が出来上がりました。

 

次はいよいよ

 ③背景画像を深度マップの画像サイズに合うように並べていく 

です!