MediaPipeでちょっと困った話


ことの発端

後輩から、「こんなエラーが出て詰みましたァ!」と元気よく泣きつかれたので調査した。

AttributeError: module 'mediapipe.python.solutions' has no attribute 'drawing_styles'

使用した環境

バージョン
Python 3.6
MediaPipe 0.8.3

あとPyCharm。

原因

MediaPipeをインストールするときに、pip install mediapipeとしたこと。

なんで?

なんか知らんが、件のdrawing_styles.pyが存在しない。pip installでのパッケージには含まれてないらしい。
大本のgithubを見ると存在してるのにね。
ついでに、以下のファイルたちも含まれていない。なんで?

  • face_mesh_connections.py
  • hands_connections.py

解決方法

以下のファイルたちを、

  • drawing_styles.py
  • face_mesh_connections.py
  • hands_connections.py

公式からダウンロードして以下の場所に保存する。

venv/Lib/site-packages/mediapipe/python/solution

その後、

venv/Lib/site-packages/mediapipe/python/solution/__init_.py

import mediapipe.python.solutions.drawing_styles

を追記する。
その後、

import mediapipe as mp
ds = mp.solutions.drawing_styles

を実行してエラーがでなければOK。


余談

この1件でMediaPipeなるものを知ったが、これ凄いね。
あんな高速に手や顔の認識ができるなんて。
コーディングに自信のある人ならLeapMotionの代わりに使えたりするんじゃない?
てかUnityとかと組み合わせられないのかね。VR系でも使いみちが多そうだけど。
気になったから調べたけど普通にUnity対応してるわこれ。
とんでもねえな。