今回の内容
2月22日の猫の日にちなんでOpenCVを使用して猫の顔を判別するコードを書いていたのですが、実行しようとしていたところ、import cv2
で詰まったので備忘メモとして残したいと思います。
今回使用したコードは以下にあります。
やりたかったこと
OpenCVを使用して猫の顔を判別するコードを動かしたい
結論
原因は異なるバージョンのPythonを複数インストールしていたことが原因で、Visual Studio Codeで設定&実行したバージョンのPythonにopencv-pythonをインストールしていなかったことが原因でした。
動作環境
Windows11
Python==3.12
OpenCV==4.9.0.80
出力されたエラー
事前の準備としてpip install opencv-python
は実施していたのですが、cv2がimportできないよと言われてしまいました。
$ C:/.../Python/Python312/python.exe c:/.../cat_face.py
Traceback (most recent call last):
File "c:\...\cat_face.py", line 1, in <module>
import cv2
^^^^^^^^^^
ModuleNotFoundError: No module named 'cv2'
確認したこと
ModuleNotFoundError: No module named 'cv2'
で検索して出てきた解決方法にopencv-pythonをinstallするという方法が多く出てきていたので以下のように確認してみました。
$ pip install opencv-python
Requirement already satisfied: opencv-python in c:\...\python\python311\lib\site-packages (4.9.0.80)
Requirement already satisfied: numpy>=1.21.2 in c:\...\python\python311\lib\site-packages (from opencv-python) (1.26.4)
$ pip install --upgrade pip
Requirement already satisfied: pip in c:\...\python\python311\lib\site-packages (24.0)
$ pip install --upgrade pip --user
Requirement already satisfied: pip in c:\...\python\python311\lib\site-packages (24.0)
$ python
Python 3.11.7 (tags/v3.11.7:fa7a6f2, Dec 4 2023, 19:24:49) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.9.0
既にインストールはできていて、import cv2もできていました。
じゃあopencv-pythonいるじゃんと思ったのですが、よく見るとPythonファイルを実行したときのPythonのバージョンとpip installで場所を確認したときのPythonのバージョンが異なっていました。
その時にPythonを複数インストールしていたことを思い出しました。
解決方法
Visual Studio Codeで使用しているPythonのバージョンを指定してopencv-pythonをインストールしました。
$ py -3.12 -m pip install opencv-python
Collecting opencv-python
Downloading opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl.metadata (20 kB)
Collecting numpy>=1.21.2 (from opencv-python)
Downloading numpy-1.26.4-cp312-cp312-win_amd64.whl.metadata (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.0/61.0 kB 1.6 MB/s eta 0:00:00
Downloading opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl (38.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.6/38.6 MB 29.7 MB/s eta 0:00:00
Downloading numpy-1.26.4-cp312-cp312-win_amd64.whl (15.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.5/15.5 MB 46.7 MB/s eta 0:00:00
Installing collected packages: numpy, opencv-python
Successfully installed numpy-1.26.4 opencv-python-4.9.0.80
$ py -3.12
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.9.0
cv2のバージョンを確認するコマンドを実行して確認後、対象のPythonファイルを実行したところ無事動かせました。
参考