見出し画像

Pythonでハーフカメラのスキャン画像を分割

趣味でフィルムカメラを使っています。
コロナであまり外に遊びにいけないこの頃。こういう時こそ、これまで撮りためた写真でフォトブックでも作ろうかな、と思い写真整理を始めました。その作業の効率化のために書いたスクリプトの記録です。

ハーフカメラとは

念のため、タイトルにあるハーフカメラについて・・・

35mmフィルム1コマに2枚の写真を写すことができるカメラのことです。
真ん中に黒い線が入った写真に仕上がります。(olympusPenFT使用)画像1

フィルムで撮った写真はいつも現像+データ化しているのですが、ハーフカメラのデータはお店によって1枚ずつバラでスキャンされるか、2枚ずつまとめてスキャンされるかが異なります。私が出しているところでは上の写真のように、2枚ずつまとめてスキャンされます。

2枚1組の組み合わせを楽しむのはハーフカメラの醍醐味なのですが、1コマずつの魅力もあるし、片方失敗していることも・・・。今回はフォトブックに使いたいのでばらけている方が便利です。

そこでpythonを使って、2コマずつまとめてスキャンされたデータを1コマずつ切り出して保存してみました。

書いたもの

Pythonの画像処理ライブラリ、pillowを使いました。

from PIL import Image, ImageFilter
from pathlib import Path
import sys

//対象の画像が保存されたPathを引数として受けとる
p = Path(sys.argv[1])

//直下にcliphalfというディレクトリを作る
save_dir = Path(str(p) + '/cliphalf')
save_dir.mkdir(exist_ok=True)

//ファイル名用変数
num = 1
//jpgの画像を取得
for picpath in list(p.glob("*.jpg")):
  picname_left = str(save_dir) + '/' + str(num) + 'l.jpg'
   picname_right = str(save_dir) + '/' + str(num) + 'r.jpg'
   
   //イメージファイルを開く
  im = Image.open(picpath)
  
   //切り取って保存
   im.crop((0, 0, 1062, 1535)).save(picname_left, quality=95)
   im.crop((1205, 0, 2267, 1535)).save(picname_right, quality=95)
   num += 1

実行すると、半分ずつに切り取られた写真がちゃんと保存されています。スクリーンショット 2020-05-06 16.53.30

使いたい!という方が万が一いれば、、、下記に使い方を置いているのでご利用ください。https://github.com/mellan22/cliphalf

※拡張子はjpgです。切り出す幅については多くのハーフカメラで使われているサイズの固定値にしているので、カメラによっては数ミリ程度ズレが出るかもしれません。

制作手順

というたいそうなものではないのですが、作る前にメモを書きました。

機能要件
・ローカルの画像フォルダにアクセス
・中の画像をリストで取得
・保存用フォルダをつくる
・画像を切り出し
・切り出しを左右ともに行う
・切り出した画像を別フォルダに保存

検討事項
・画像フォルダの指定方法は?
・切り出す機能にはどんなのがある?
・切り出した画像の保存名は?どうやってユニークにする?

必要な機能と、決めるべき点を大まかに書き出して、迷いそうなポイントにあたりをつけました。やりたいことはシンプルですが、事前に箇条書きにすることで書き始めた後の迷いがなくなり、より素早く書けたように思います。

感想

短いスクリプトで結構な時間が短縮できたのでとてもコスパがよかったです!36枚分の写真があっという間に処理できました。
pillowの機能を調べていると、色を取得したり合成したりgif画像を作ったり他にもいろいろできるようで、また思いついたら遊んでみたいなと思いました。


この記事が気に入ったらサポートをしてみませんか?