デジタル曼荼羅 - dominickchen/cmrd GitHub Wiki

説明・雑記

縁日=神仏に縁を結ぶ日。神仏という不可侵でブラックボックス的なものと、未来(あるいは現代)テクノロジーのブラックボックス的な側面をオーバーラップさせることを試みる映像作品。 Image from Gyazo

曼荼羅の絵をOpenCVを用いてプログラミングで変形・加工させていく。

動画は2部構成になっており、前半は画像をグリッチ加工した映像で後半は顔認証で機械に認識させてる。 個人的にお気に入りは後半の方で、機械が顔(=仏)だと認識しているものと我々が「仏」だと認識しているものにギャップがあり、そこから色々なことが考えられるなと思った。この後半の動画は、パソコンが低スペックなせいか、顔認識させたら元は2分の動画なのに書き出すと40分ほどの動画になっていたが、発表前日の深夜に飽きもせず1人で40分間ずっと見てられた。

動画データ https://youtu.be/JZ74dSHdD6Y

作り方

・曼荼羅の画像をimovieで動画化

・macにpythonとopencvをインストール。

・動画化したファイルをmacのターミナル上で加工、ソースコードは以下の通り(顔認識はopencvのカスケードファイルを利用)。

>>> import numpy as np
>>> import cv2
>>> 
>>> def main():
...     cap = cv2.VideoCapture("/Users/YUKI/Desktop/mandala.mov")
...     while(cap.isOpened()):
...             ret, frame = cap.read()
...             CASCADE_PATH = ("/Users/YUKI/Desktop/opencv-master/data/haarcascades/haarcascade_frontalface_default.xml")
...             cascade = cv2.CascadeClassifier(CASCADE_PATH)
...             gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
...             face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30))
...             for (x, y, w, h) in face:
...                     cv2.rectangle(frame, (x, y), (x + w, y+h), (0,255,65), 3)
...             cv2.imshow("Flame", frame)
...             if cv2.waitKey(1) & 0xFF == ord('q'):
...                     break
...     cap.release()
...     cv2.destroyAllWindows()
... 
>>>  if __name__ == "__main__":
...     main()

・グリッチ加工した動画と顔認識かけた動画をimovieで繋げて1つにする。

うまくいかなかったこと

・当初はグリッチ加工もプログラミングで行おうとしたが、結局できずに断念。アプリで加工した。

・プログラミングはほぼ初めてだったが、やはり学習や試行錯誤にかなり時間がかかった(顔認識加工できたのも発表前日の深夜)。

・動画の書き出しはできたもののなぜか保存ができなかったので、書き出したものを画面キャプチャで録画して保存した。