pythonで意地でもOpenCVしたい

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()

カメラでキャプチャするプログラムが動いたので、こっちもインストールに成功。 さぁて書きたいもの書いてみるか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です