1.はじめに
Pythonのopencv-python
モジュールでバージョン4.8あたりからmodule 'cv2.dnn' has no attribute 'DictValue'
というエラーが出始めたようで,筆者もこの問題に遭遇しました.
バージョンを下げるとか,エラー箇所をコメントアウトする とか暫定対策的な記事が多かったですが,筆者の環境では解決ができましたので,記事に残すことにしました.
1-1.使用環境
- Windows11
- WSL2
- Ubuntu 22.04.1 LTS
- Dockerベースイメージ:nvcr.io/nvidia/pytorch:24.04-py3
2.対策
筆者の環境で効果があったのは,こちらのコメントでした.
筆者の場合は,opencv-python-headless
ではなくopencv-python
にしましたが,同様に問題は解決できました.
pip uninstall -y opencv
rm -rf /usr/local/lib/python3.10/dist-packages/cv2/
pip install opencv-python==4.9.0.80
- 1行目のuninstallですが,
nvcr.io/nvidia/pytorch:24.04-py3
にインストールされているのがopencv-python
でない為か,uninstall対象として指定するのはopencv
が正しいようです.
opencv-python
でインストールされたものをuninstallする場合は,opencv-python
を指定するのが正しいと思われます. - 2行目のPythonバージョンと3行目の
opencv-python
のバージョンは各自の環境に合わせて改変してください
3.さいごに
根本対策に悩んでいる方の参考になれば幸いです.
4.関連リンク
-
module 'cv2.dnn' has no attribute 'DictValue' #884
- バージョン下げたらいいよ という対策 → https://github.com/opencv/opencv-python/issues/884#issuecomment-1684691124
- 筆者はバージョンを下げられる状況になく,今回はこの対策を採用できなかった
- 再インストールしたらいいよ という対策 → https://github.com/opencv/opencv-python/issues/884#issuecomment-1806982912
- 筆者の環境で解決の参考になった対策
-
AutoFix()
を使ったらいいよ という対策 → https://github.com/opencv/opencv-python/issues/884#issuecomment-1880049391- 都合により多重階層の深めのところでOpenCVのバージョン更新がされてしまう環境にあり,
AutoFix()
の挿入ができず,採用できなかった
- 都合により多重階層の深めのところでOpenCVのバージョン更新がされてしまう環境にあり,
- コメントアウトしたらいいよ という対策 → https://github.com/facebookresearch/nougat/issues/40#issuecomment-1888077509
- ソースコードを触るのはちょっと・・・と思い,採用しなかった
- バージョン下げたらいいよ という対策 → https://github.com/opencv/opencv-python/issues/884#issuecomment-1684691124