iOSアプリ「Pyto」でPythonを使ったお手軽カメラアプリ開発

f:id:karaage:20200607185736p:plain:w640

iOSアプリ「Pyto」

 きっかけはTwitterでフォローしている @robo8080 さんの以下ツイートでした。

 これ以前から@robo8080 さんには、iOSアプリの「Pyto」というiPhone/iPad上でPython開発ができる(しかもOpenCVまで動く)ということを教えていただいていて気になっていました。有料ということと、iPhoneだけだと開発が難しそうと二の足を踏んでいたのですが、やはり百聞は一見に如かずですね。デモをみてたまらず買ってしまいました。

Pyto - Python 3

Pyto - Python 3

  • Develobile S.p.A.
  • 開発ツール
  • 無料

 自分が買ったときは1200円くらいでした。

「Pyto」を使ったiPhoneカメラの顔の上書きアプリ

 早速真似して作ってみました。顔を上書きする、いわゆる「笑い男」アプリですね。

 Pythonで顔認識は、以下記事に書いたようにOpenCVさえあれば簡単にできるので、1時間くらいで完成しました。

 iPhoneのカメラアプリがこれだけ手軽にPythonで書けちゃうのは楽しいし感動ですね。Pyto良いです!

 ソースコードはGitHubで公開しています。PythonとOpenCVが使えればPC上でも動きますので気軽に試してみてください(ただし、後述しますがPC上だと赤と青の色が入れ替わってしまいます)。

「Pyto」でカメラアプリを開発する方法

 PytoでPython開発する上で多少注意しないといけないポイントやコツがあるので、メモがわりにまとめておきます。

コードを書くときはメモアプリやタスク管理ソフトからのコピペが便利

 特にiPhoneで開発するときiPhone上でコード書くのが辛いものがあります。PCでコードを書いてコピペするのが一番楽です。

 私はタスク管理サービスの「Microsoft To Do」を活用しました。PC上でコピペしたコードがすぐiPhoneに同期されるので、そこからiPhone上でPytoにコピペをします。

f:id:karaage:20200607220342p:plain:w400
 To Doでコピペしている様子

 To Doに関して詳細は以下記事参照ください。

 もちろん、iPhone標準のメモアプリや他のお好みのアプリでも良いと思います。

画像ファイルを「Pyto」で使用する方法

 今回は自分のアイコン画像を上書きするので、画像ファイルをiPhoneの「Pyto」アプリのフォルダに送る必要があります。ファイルを送るには、iTunesでiPhoneに接続して「Pyto」フォルダを選択してファイルを追加します。あとは、以下のように「Pyto」フォルダ上に実行するソースコードを作成します。最終的にソースコードと画像ファイルが同じ場所にあればOKです。

f:id:karaage:20200607220507p:plain:w400

Argumentsでフロントカメラとバックカメラを切り替える

 右下の設定アイコンをクリックすると、プログラムのArguments(引数)を設定できます。「Pyto」のカメラアプリのサンプルコードはデフォルトではフロントカメラを使用しますが、Argumentsに0を渡すとバックカメラを使用するようになります。

f:id:karaage:20200607221036p:plain:w400

 Argumentsを使って、色々ソフトの挙動を変えることもできます。サンプルのソースコードをみれば使い方は分かると思います。

cv2.waitKeyは動かない

 PCでは、環境によってOpenCVのカメラ表示のループを回す際に以下のようにcv2.waitKeyを設定しないと表示されないケースがあります。ただ「Pyto」だとエラーになるので、以下のようにtryで囲めばPCでもPyto上でも動くソフトになります。

    try:
        if cv2.waitKey(1) == 27:
            break

RGBとBGRの並び

 OpenCVの場合、RGBの並びがBGRとなることはよく知られていますが、Pytoの場合、何故か最後の表示のときはBGRでなくてRGBの並びにしないといけません。RGBを入れ替えるのは以下コマンドです。

frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

 サンプルアプリの通り、imshowの前に実行すればよいだけなのですがPC上で同じプログラムを実行すると色のRとBが入れ替わることになるので注意しましょう。気になる人は「Arguments」を使ってうまくPCとPytoで切り替えるようにすると良いと思います。

まとめ

 iOSアプリの「Pyto」を使ってiPhoneで動くカメラアプリを作ってみました。iPhoneのカメラアプリは、昔作りたいなと思ってチャレンジしことあるのですが、開発環境を構築したり、Appleに申請を送ったりしているだけで力尽きて、結局Appleにお布施だけ支払って挫折した記憶があります。それが、今や1日もかからずPythonで手軽に開発できるのは良いですよね。もちろん、デザインに凝ったりは難しいですし、実際のカメラアプリとしてリリースすることはできませんが、プロトタイプ・デモ・個人用途なら十分なポテンシャルがあると思います。

 さらにOpenCVはOpen CV DNNというディープラーニングの機能もあるので、ディープラーニングを使用したカメラアプリとかもできそうですなので、そちらも気が向いたら試してみたいなと思います。

 というわけでiPhone/iPadで手軽にカメラアプリ作りたいPython使いの方には「Pyto」おすすめです!

Pyto - Python 3

Pyto - Python 3

  • Develobile S.p.A.
  • 開発ツール
  • 無料

関連記事