個展A Beautiful Greedについて振り返る【From the Vault & Mixutre】編
導入言い訳
From the Vault:貴重品室より。
俺にとっての一番の貴重品ってのは記録と経験。写真は自身の大切な記録と経験を写す媒体だから、このFrom the Vaultシリーズは記録写真を作品に昇華させようと考えたシリーズです。
でも…でもですね、確かに撮影者の記録写真は凄く大事なものです。でも、それって【撮影者を知らない人】【写っている人を知らない人】にとっては、興味を惹かれない場合が多いと思うんですよ(少なくとも、俺はそうです)。
よく俺が例えるのが結婚式の写真なんですけど、結婚式の写真って、自分の知ってる人なら凄く楽しんで見れるけど、全く知らん人の写真って興味持てないんですよ。
記録写真ってのは、基本的にどれほど自分にとって大切な写真でも、他人に「その大切さ」を伝えるのは難しいんじゃないかって思うんですよね。
だから一般的には、記録写真は表現としてまとめることで作品として発表してる気がするんですよね。純粋な美しさ、綺麗さ、かわいさといった写真の強さや、テーマやモチーフで写真を組することで表現物として昇華している。
俺も最初はそうしようと思ったんだけど、俺の写真やりはじめてからの期間ってそんな簡単にまとまるレベルじゃないんですよ。あと、まとめきれなかった写真を排除するってのも、From the Vaultのコンセプトからズレている。
じゃあどうすればいいねん!考え抜いた先に俺がたどり着いた答えは、写真に鑑賞者が写っていればいいやん、って思ったんですよ。つまり、自分が写ってる写真なら楽しんでもらえるんじゃないかと。
ってことで前置き長くなりましたが、そんな俺の写真に他人を写す装置、それが[Mixture]、通称プ●クラでございます。
Mixtureについて
このカーテンを抜けた先、そこには…!
ででーん!!
使い方は簡単。カメラの前に立って、シャッターボタンを押す。それだけ。
それだけで、展示作品のどれかと多重露光されて、Twitterに(勝手に)アップされる(鬼畜)仕様です。
今回展示した記録写真たち。公開NGの方もいるので、モザイクしてます。
このmixture、実は先に書いた理由以外にも、俺が展示をするための様々な意味や意図を含んでいます。
◇俺の記録と関わりのない人にも、俺の写真と触れるきっかけになって欲しい◇
▶▶先に書いた通り。
◇写真展を音楽LIVEのようにしたい◇
▶▶俺の写真展はロックフェスにしたいのよ。お客さんも動いてもらいたい。俺の展示はクラッシックコンサートじゃないねん。
◇展示場で、唯一俺の知らない写真が出てくる◇
▶▶自分が在廊してて楽しめるアイデアが欲しかったのよ、個展だと(自分の)知ってる写真しか展示されないのはツマランねん。
◇俺の予測を超えてくれる可能性を秘めている◇
▶▶元々このMixtureが展示されていた3Fは、「予測を超える」ことがメインテーマ。
◇展示場所で撮影した写真を、記録としてもって帰ってもらいたい◇
▶▶代わりに、展示風景のSNS公開NGにしたの。
◇俺がプリクラ全然撮ったことないからみんなと撮りたかった◇
▶▶くっそ大事!俺もプリクラ撮りたいねんんん!!取り戻すぞ青春!!
俺の過去と、あなたの現在。
組み合わせることで、未来…とはいえないかもしれないけど、新しい世界を作り出せるのではないか。それを模索した展示でした。
作例紹介
基本的にTwitterの@ftv0629にアップしていますので、そこを参照して下さい。
今回のために作ったアカウントなんですが、思った以上にフォローいただいているので、何か今後も新しい取り組みができないかな…と検討しています!
予想を超える写真、という名目でしたが、合成元の写真と写った人の構図とカメラの露出でずいぶんと変わるので、たいていめちゃくちゃになってますがw,それはそれで面白い。御協力いただいた皆様、ありがとうございました!
ハードウェアについて
※以下、としお流機材作成の話になりますので、実際に改造する時は自己責任でお願いします。
基本的には、カメラを構成するRaspberry Piと、シャッターボタン、ディスプレイ、そしてストロボ発光ユニットと音声ユニットに分かれています。
※汚い
音声ガイドはなんで外付けなの…?プログラム中に組み込めなかったの…??ってのは当然の話だと思うんですが、既にカメラ筐体を作ってしまった時点でオーディオジャック潰してしまってな…。HDMIから音だそうにもディスプレイから音出ないんよ…。
ということで音は、ド●キホーテで売ってる500円MP3プレイヤーを使ってます。これ、自作大好きマンにめっちゃオススメしたい一品でして、4.5-5v(乾電池3本分)で動作する上に、毎度電源ONするたびにトラックの最初に戻る(糞)仕様です。逆に電源ONすれば毎度最初のトラックからスタートできるので、応用の幅が広い一品なのでございます。
超分解簡単なのでオススメ。
ちなみに同じMP3プレイヤーは以前PHOTOJAM NAGOYA というイベントで出展していた「自動ポストカード販売マシーン」通称チ●キにも使用しています(当時はシャッター音で使用していた)。今思えば、この時に「え〜実際に自撮りできないとか糞じゃん〜」って言われたのが今回のMixture作成のヒントになったのかもしれない。。
白い物体がそれ。展示作品と一緒のポストカードが、100円入れると出てくる
あと、ところどころでリレーが出てきますが、これはストロボ等の光るタイミングを調整するためです。基本的にハード制御の方が性に合ってるので。。
ちなみに今回使ったリレーはこれ。凄く使いやすいし、設定色々できるので持っていると役立つ場面も多いと思う。海外からの発送で納期が若干かかっちゃうけど、2,3個ぐらい仕入れておいても損はしない一品です。
ソースコードについて
基本プログラムは、からあげさん(@karaage0703)のページを参考にしました。というかこれが全て。からあげさんは、個人的に日本三大自作カメラ職人だと思うぐらいリスペクトしています。ほんま凄い。
恥ずかしいけど、もっとブラッシュアップした物を作りたいのでコードも晒します(何が恥ずかしいって、からあげさんのなかよしデジカメと殆ど変わらないトコロ…)。普段プログラムしないので、色々教えて下さい諸先輩方!!
次回やる際は、せめて撮って合成された写真をTwitterにアップされて良いか悪いかを選択できるようにしたいですね!
#!/usr/bin/env python
# -*0 coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
import picamera
import os
import pygame
import syslog
import subprocess
import twython
import cv2
import numpy as np
# twitter
CONSUMER_KEY = 'CONSUMER_KEYの入力'
CONSUMER_SECRET = 'CONSUMER_SECRETの入力'
ACCESS_KEY = 'ACCESS_KEYの入力'
ACCESS_SECRET = 'ACCESS_SECRETの入力'
api = twython.Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)
now = time.ctime()
parsed = time.strptime(now)
tweetTime = time.strftime("%Y %b %d (%a) %H:%M:%S ", parsed)
# GPIO pin
RightSh = 18
strb = 17
# GPIO setting
GPIO.setmode(GPIO.BCM)
GPIO.setup(RightSh, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(strb, GPIO.OUT)
# Camera Setting
shutter_numb = 0
# global
SleepStepSec = 0.1
home_dir1 = '/home/pi/camera/data1'
home_dir2 = '/home/pi/camera/data2'
home_dir3 = '/home/pi/camera/data3'
pygame.init()
size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
print "Framebuffer size: %d x %d" % (size[0], size[1])
screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
keifont = pygame.font.Font(os.path.join(home_dir1, 'keifont.ttf'), 80)
def screen_clear():
screen.fill((0,0,0))
pygame.display.update()
def load():
global shutter_numb
filename1 = os.path.join(home_dir1, 'camera.set')
filename2 = os.path.join(home_dir2, 'camera.set')
fp = open(filename1)
tmp_shutter_numb = fp.readlines()
tmp2_shutter_numb = tmp_shutter_numb[0].rstrip()
shutter_numb = int(tmp2_shutter_numb)
fp.close()
print "shutter_numb:" + str(shutter_numb)
def save():
filename1 = os.path.join(home_dir1, 'camera.set')
fp = open(filename1, 'w')
fp.write(str(shutter_numb))
fp.close()
def shutter(channel):
global shutter_numb
global preview_numb
print "shutter"
screen_clear()
shutter_numb += 1
preview_numb = shutter_numb
save()
# 撮影
filename1 = os.path.join(home_dir1, str(shutter_numb) + '.jpg')
filename2 = os.path.join(home_dir2, str(shutter_numb) + '.jpg')
photofile = open(filename1, 'wb')
with picamera.PiCamera() as camera:
camera.start_preview()
# カメラ設定
GPIO.output(strb, True)
time.sleep(2)
GPIO.output(strb, False)
camera.resolution = (1280,720)
camera.shutter_speed = 1000000
camera.iso = 800
camera.brightness = 70
# camera.sharpness = 0
# camera.contrast = 20
# camera.video_stabilization = False
# camera.exposure_compensation = 0
# camera.exposure_mode = 'auto'
# camera.meter_mode = 'average'
# camera.awb_mode = 'auto'
# camera.image_effect = 'film'
# camera.color_effects = None
# camera.rotation = 0
# camera.hflip = False
# camera.vflip = False
# camera.crop = (0.0, 0.0, 1.0, 1.0)
# ストロボおよび音声同調リレータイム
time.sleep(11.945) # initialize camera
camera.capture(photofile)
photofile.close()
# 合成
filename01 = "/home/pi/camera/data1/"+str(shutter_numb)+".jpg"
filename02 = "/home/pi/camera/data2/"+str(shutter_numb)+".jpg"
filename03 = "/home/pi/camera/data3/"+str(shutter_numb)+".jpg"
img1 = cv2.imread(filename01, 1)
img2 = cv2.imread(filename02, 1)
gray1 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_RGB2GRAY)
alpha = 1
beta = 0.8
add = cv2.addWeighted(gray1,alpha,gray2,beta,0)
# Twitter
cv2.imwrite(filename03,add)
filename3 = os.path.join(home_dir3, str(shutter_numb) + '.jpg')
photo = open(filename3, 'rb')
media_status = api.upload_media(media=photo)
api.update_status(media_ids=[media_status['media_id']],status= '【Frome the Vault】 : '+str(shutter_numb) + ' : ' + str(tweetTime)+' と過去の記憶')
GPIO.add_event_detect(RightSh, GPIO.FALLING, callback=shutter, bouncetime=30000)
load()
while True:
img = pygame.image.load("./data/cameratest.jpg").convert()
screen.blit(img, (0,0))
pygame.display.update()
time.sleep(5)
img = pygame.image.load("./data/cameratest2.jpg").convert()
screen.blit(img, (0,0))
pygame.display.update()
time.sleep(5)
img = pygame.image.load("./data/cameratest3.jpg").convert()
screen.blit(img, (0,0))
pygame.display.update()
time.sleep(5)
GPIO.cleanup() # clean up GPIO on normal exit
他参照元:
今後の展開について
このMixtureは、今回は「記録写真」に焦点を当てた作品でしたが、それ以外にも色々な場面で使える展示物なのではないか、と考えています。
一応、全てダクトレール(スポットライトとか使う用のライトレール)に取り付け、電源供給も可能な仕様になっているので、他展示会場でも使用可能です。展示物というより、写真展に来てくれた人向けのお土産として、プリクラ撮ってもらうぐらいのスタンスでなら置いても楽しいかもしれません。
とはいえ普通の展示会場は撮影NGですし、Raspberry Piの宿命として、電源の切り方はある程度知識がある人でなければ行えません。あとは現状オートでプログラムが走るようにしていないので、毎度ターミナル打ち込まないとダメなのも改善したいところ。作業標準でも作るかなぁ。
実際にはストロボの同調速度がうまく合わなかったり、色々改良の余地はあると思うので、改良次第で他の展示物や作品に繋げていこうと思っております!またどこかで書くけど、Raspberry PiやArduinoは、カメラマンや写真家こそ使うべきアイテム。新しい可能性を、どんどん形に出来ますよ!!
ではでは!