強火で進め

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

視差のチェック用に画像合成プログラムを作成


アドオンのSDKが公開され、立体視のプログラムが作れる様になりました。

しかし、プログラムを作った後に表示してみてもイマイチちゃんと描画されているのか分かりづらいです。「何となく変な気がする」程度は感じるのですが……

と言う事でPythonで「左目用と右目用の画像を50%:50%で合成するプログラム」を作りました。
合成された画像は元画像に _cnv と付いたファイル名で出力されます。

【注意点】

  • PythonのPILを使っています。事前にインストールをしておいて下さい。
  • このバージョンでは横向きの画像にしか対応していません。
  • 変換前の画像はAndroidの画面キャプチャなどで作成して下さい。
#! /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)
cnvFile = orgFileOnly+'_cnv'+ext
print '合成後のファイル '+cnvFile

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

print 'origine image size '+str(w)+ 'x' +str(h)
t_h = h / 2
b_h = h - t_h
if (t_h != b_h):
    print '2で割れないサイズの画像です。'
    quit()
part = orgImg.crop((0, 0, w, t_h)) # (左、上、右、下)の矩形で切り取り
lImg = Image.new('RGB',(w, t_h),(255,255,255)) # モード、サイズ、背景色
lImg.paste(part, (0, 0, w, t_h)) # 貼り付け

part = orgImg.crop((0, t_h, w, h)) # (左、上、右、下)の矩形で切り取り
rImg = Image.new('RGB',(w, t_h),(255,255,255)) # モード、サイズ、背景色
rImg.paste(part, (0, 0, w, t_h)) # 貼り付け

cnvImg = Image.blend(lImg, rImg, 0.5)
cnv_w, cnv_h = cnvImg.size
cnvImg = cnvImg.resize((cnv_w, cnv_h*2))
cnv_w, conv_h = cnvImg.size

cnvImg2 = Image.new('RGB',(cnv_h*2, cnv_w),(255,255,255)) # モード、サイズ、背景色
cnvImg2 = cnvImg.rotate(90)
cnvImg2.convert("RGB").save(cnvFile)