kivantium活動日記

プログラムを使っていろいろやります

ヘスティアの紐の追っかけ

彗星のようにアニメ界に現れて話題をさらって行った「ダンジョンに出会いを求めるのは間違っているだろうか」の登場人物へスティアが結んでいる「謎の紐」。Pixivでも大流行になっているようです。www.pixiv.net

乗るしか無いこのビッグウェーブに!というわけでブームに乗ってへスティアの紐について何かやってみます。

CMTのインストール

ヘスティアの紐は動く対象なので、動く対象を追跡するアルゴリズムCMT(Consensus-based Matching and Tracking of Keypoints)を使ってみます。紹介ページはこちらClustering of Static-Adaptive Correspondences for Deformable Object Tracking

GitHubのREADMEを見れば使い方は簡単に分かります。

pythonでrun.pyを実行するだけなのですが、出力を保存できるように少し手を加えます。
1. 30行目付近のparser.add_argumentが並んでいるところに

parser.add_argument('--rec', dest='rec', action='store_true', help='Record the output')

を追加
2. 90行目付近のcap = cv2.VideoCapture(args.inputpath)の次の行に追加

if args.rec:
                            fourcc = cv2.cv.CV_FOURCC(*'DIVX')
                            out = cv2.VideoWriter('output.avi', fourcc, int(cap.get(cv2.cv.CV_CAP_PROP_FPS)),(int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT))))

3. 最終行のwhileを抜けたブロックに

out.release()

(必須ではないかもしれない)

python run.py --rec (動画ファイル名) 

と実行すると追跡する領域の選択画面になるので、クリックで矩形選択します。すると追跡結果が表示され、結果はoutput.aviに保存されます


結果

http://kivantium.net/rope.gif
一番紐が連続して映っている部分を使った結果こうなったので、期待したような映像ではなかったかもしれません……

これだけではすごさがよく分からないのでもう一例。
http://kivantium.net/angel.gif

特別に顔学習器を使っているわけでもないのにかなりいい精度が出ています。すごい。

というわけでCMTというアルゴリズムを使って遊んでみたという話でした。