pythonでOpenCVしようとしたけど、うまく行かなかったので無理やり色々試してみたメモ
もともとの環境
- python 3.10(Scoopでインストールしたもの)
- python 3.8(msys2でインストールしたもの)
経緯
venvした環境のpipでopencv-pythonをインストールしようとしたが、numpy1.19.3が見つからないとエラーが出る。 試しにnumpyをインストールしようとしたところ、ビルドエラーが発生。かなり長いエラーメッセージとコードを頑張って読んだところ、エラーメッセージの出力部分でバグがあって、そこで止まったみたい。
とはいえopencv-pythonがこれを要求してるので、意地でも入れないといけない……というわけでこのバグだけ手作業で修正してインストールを試みた。
修正
pypiのnumpyのページから1.19.3-cp39-cp39-win32_amd64.whlをダウンロード。これは拡張子が違うだけのzipファイルなので、unzipで展開。修正箇所もわかってるのでサクッと修正。
修正したものをzip numpy-1.19.3-cp39-cp39-win_amd64.whl numpy numpy-1.19.3.dist-info/
で圧縮してwhlファイルを作成。
python入れ直し
もともとWindowsのターミナルからは見えないmsys2のpythonはともかく、Scoopで入れたpythonがすでにバージョン3.10でこのままでは使えない(pipがcp39-cp39-win_amd64はサポートしてないとエラーを返した)ので、一旦Scoop uninstall python
でpythonを消して、 Scoop bucket add versions
で過去のバージョンを使えるようにして、Scoop install python39
でpython3.9をインストール。
numpyとopencv-pythonインストール
pip install D:\numpy\numpy-1.19.3-cp39-cp39-win_amd64.whl
で修正したnumpyを直接指定してインストール。
pythonで
import numpy
と入れてエラーにならなかったので、インストールは成功。
そのまま勢いでpip install opencv-python
でOpenCVPythonもインストール。
import cv2
capture = cv2.VideoCapture(0)
ret, frame = capture.read()
cv2.imshow('frame', frame)
cv2.waitKey(0)
capture.release()
cv2.destroyAllWindows()
カメラでキャプチャするプログラムが動いたので、こっちもインストールに成功。 さぁて書きたいもの書いてみるか。