強火で進め

このブログではプログラム関連の記事を中心に書いてます。

SH-03Cで表示させるMPOファイルをOpenGLで作成

作成手順の紹介。まずは元画像を作成、プログラムはこちらの雑誌で紹介されていたプログラムを多少変更しただけでほぼそのまま使用。

今月号(2011年 01月号)のInterfaceは立体視特集 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20101128/1290963594

実行した結果はこんな感じ。

これをキャプチャし、Pythonのこんなプログラムでタイトル部分を削除&右目用と左目用の2つの画像に分割。
※このプログラムではPILを使用しています。このプログラムを使用する場合は事前にインストールしておく必要があります。

#! /usr/bin/env python
# coding: utf-8
# coding=utf-8
# -*- coding: utf-8 -*-
# vim: fileencoding=utf-8
import sys
import os
from PIL import Image
try:
    from PIL import Image
except ImportError:
    import Image

if (len(sys.argv) == 1):
    print '分割するファイルを指定して下さい。'
    quit()
orgFile = sys.argv[1]
print '入力ファイル '+orgFile
orgFileOnly, ext = os.path.splitext(orgFile)
lImgFile = orgFileOnly+'_L'+ext
print '出力ファイル(L) '+lImgFile
rImgFile = orgFileOnly+'_R'+ext
print '出力ファイル(R) '+rImgFile

orgImg = Image.open(orgFile)
w, h = orgImg.size

print 'origine image size '+str(w)+ 'x' +str(h)
caption_size = 22 # ウィンドウのキャプション部分を削除
new_w = w
new_h = h-caption_size
part = orgImg.crop((0, caption_size, w, h)) # (左、上、右、下)の矩形で切り取り
newImg = Image.new('RGB',(new_w, new_h),(255,255,255)) # モード、サイズ、背景色
newImg.paste(part, (0, 0, new_w, new_h)) # 貼り付け
l_w = new_w / 2
r_w = new_w - l_w
if (l_w != r_w):
    print '2で割れないサイズの画像です。'
    quit()
part = newImg.crop((0, 0, l_w, new_h)) # (左、上、右、下)の矩形で切り取り
lImg = Image.new('RGB',(l_w, new_h),(255,255,255)) # モード、サイズ、背景色
lImg.paste(part, (0, 0, l_w, new_h)) # 貼り付け
lImg.save(lImgFile)

part = newImg.crop((l_w, 0, new_w, new_h)) # (左、上、右、下)の矩形で切り取り
rImg = Image.new('RGB',(r_w, new_h),(255,255,255)) # モード、サイズ、背景色
rImg.paste(part, (0, 0, r_w, new_h)) # 貼り付け
rImg.save(rImgFile)

で、分割された画像がこちら。

これを元にMPOファイルを作成するのですが残念ながらMacMPOファイルを作成出来る無料のツールが見つからなかったのでWindows向けのアプリ「ステレオフォトメーカー」を使用して作成しました。ここもMacで完結出来るようになると良いなぁ。

StereoPhoto Maker
http://stereo.jpn.org/jpn/stphmkr/index.html

そして、出来たMPOファイルがこちら。SH-03CでDLして観れます。

そこそこ立体感が出てました。しかし、まだまだ改善の余地が有りそうなのでもっと立体感が出る構図や設定なども研究したい所です。

ちなみにSH-03Cで観ると横幅が短いかと思います。SH-03Cの画面サイズは横向きの時に800x480なので本来であれば分割前の画像を1600x480で表示させないといけないのですが自分のMacBookでは表示出来ないサイズなので今回は1000x480で作成しました。

最終的には左目用、右目用を別々に表示し、なおかつ画像ファイルに出力する所までプログラムを作りたいと思っています。