2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

opencv-contrib-pythonが読み込めない

Posted at

環境

  • Ubuntu: 18.04.6 LTS
  • Python: 3.9.13
  • Pipenv: version 2022.4.20
  • opencv-pythonの最新バージョン: 4.6.0.66

問題

  • from cv2 import dnn_superres をしようとすると ImportError: cannot import name 'dnn_superes' from 'cv2' と怒られる
  • モジュールのアンイストールとかをごちゃごちゃやっていると cv2 のほうでエラー発生
    • AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circular import)
  • バージョンを 4.5.5.64 に下げるといいという投稿に従ってやっても直らず
    • cv2 のエラーはなくなったが、ImportError: cannot import name 'dnn_superes' from 'cv2' が再度出る
  • 別の easyocr というパッケージをインストールした場合もエラー

原因

  • opencv系のパッケージは4つあり、そのうち1つのみをインストールすることになっている
    • opencv-python, opencv-python-headless, opencv-contrib-python, opencv-contrib-python-headless
  • しかし他のパッケージで別のopencv系のパッケージを利用していると、その環境下で複数のopencv系のパッケージを利用していることになってしまう
    • 例: easyocr
  • おそらくユーザが import cv2 などで呼び出しているのは、最後にインストールしたopencv系のパッケージ
    • contribインストール後に別のopencv系のパッケージがインストールされるとエラー
    • from cv2 import dnn_superres -> ImportError: cannot import name 'dnn_superres' from 'cv2'
  • opencv系のパッケージ間でバージョンが異なる?とエラー
    • import cv2 -> AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline'
    • (もしかしたら特定のバージョン利用によるエラーかもしれない)

解決法

  1. 環境を作り直す
    • このときopencvに関連するパッケージはインストールしない
  2. opencv系のパッケージを利用してるパッケージを先にインストール
    • pip show <package-nameRequires: の欄を確認
  3. 利用されているopencv系のパッケージを最新にアップデートしておく
    • pipenv install opencv-python-headless==4.6.0.66 (pip install opencv-python-headless==4.6.0.66)
    • (どれがインストールされているかわからないときは、とりあえず pip show で4つのopencv系パッケージを調べ、インストールされていてバージョンが古いものをアップデートしておけばOK)
  4. opencv-contrib-pythonをインストール
    • pipenv install opencv-contrib-python==4.6.0.66 (pip install opencv-contrib-python==4.6.0.66)

(今後opencv系のパッケージを利用しているパッケージをインストールし、新しくopencvがインストール・アップデートされた場合は、再度3・4を実行する)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?