前提・実現したいこと
Streamlit Sharing でデプロイしたいのですがエラーが解消されません。
発生している問題・エラーメッセージ
ModuleNotFoundError: No module named 'cv2'
修正後のエラー
error: OpenCV(4.4.0) /tmp/pip-req-build-dglzv4yn/opencv/modules/highgui/src/window.cpp:645: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvDestroyAllWindows'
修正後のエラー画面
該当のソースコード
Python
1if on: 2 i=0 3 print(i) 4 print("ループ内") 5 6 cap = cv2.VideoCapture(i) 7 8 cascade = cv2.CascadeClassifier('C:/Users/81908/Documents/Python/Opencv/haarcascade_frontalface_alt.xml') 9 10 while(cap.isOpened()): 11 # フレームを取得 12 ret, frame = cap.read() 13 14 #frame = cv2.resize(frame, (1100,600)) 15 #time.sleep(1) 16 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 17 gray = cv2.equalizeHist(gray) 18 faces = cascade.detectMultiScale(gray, 19 # detector options 20 scaleFactor = 1.1, 21 minNeighbors = 5, 22 minSize = (24, 24)) 23 for (x, y, w, h) in faces: 24 #cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) 25 img = cv2.imread(kyara, cv2.IMREAD_UNCHANGED) 26 #画像重ねる。位置調整。サイズ調整 27 size = (w*size_param,h*size_param) 28 img = cv2.resize(img , size) 29 30 x = int(x/2+x_param) 31 y = int(y/2+y_param) 32 # 画像のオーバーレイ 33 frame = overlayImage(frame , img, (x, y)) 34 # フレームを表示 35 #cv2.imshow("Flame", frame) 36 37 #opencv画像から変換 38 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 39 frame = Image.fromarray(frame) 40 frame = frame.convert('RGBA') 41 42 image_loc.image(frame) 43 #cv2.moveWindow('Flame', 100, 200) 44 cap.release() 45 cv2.destroyAllWindows()
試したこと
pip freeze > requirements.txt
でrequirements.txtを作成しました。
requirements.txt内には、
opencv-python==4.4.0.46
と記載されています。
補足情報(FW/ツールのバージョンなど)
ローカル環境では正常に動作しています。
requirements.txt内の順番に依存するかも
https://discuss.streamlit.io/t/solved-import-cv2-no-module-exists-error-while-deploying/6799/3
ありがとうございます。
試した結果、エラーは消えましたが、新たなエラーが出てしまいました。
If you are on Ubuntu or Debian, install libgtk2.0-dev
って書いてありますよね
https://discuss.streamlit.io/t/solved-import-cv2-no-module-exists-error-while-deploying/6799/6
の一番下に書かれてる packages.txt にも libgtk2.0-dev って書いてあるので、それやってみたらいかがでしょうか??
(packages.txt の役割とか、全然知らないのですが)
https://qiita.com/bear_montblanc/items/e9b47d1cde5088d1c2b0
にも、OpenCV使うときは packages.txt 必要、みたいに書いてあります
packages.txt にはすでに以下のように記載したのですがエラー画面は変化しません。
libsm6
libxrender1
libfontconfig1
libice6
freeglut3-dev
libgtk2.0-dev
pkg-config
https://github.com/Be4rR/put_mask/
のファイルをそのまま(プログラムも含めて)使っても、同じエラー出るのでしょうか?
【追記】上記は、直接cv2を使ってないので、参考にならないかもしれません
(importしてるmtcnnが内部でOpenCVを使っている、とのこと)
opencvは使えました。今回は、opencvでカメラを用いて処理を行いたいのですが、カメラを起動しようとすると"修正後のエラー画面"が出てしまいます。
WindowsならRebuildしてね♪
UbuntuかDebianならInstallしてね♪
って言われてるので、それに従えばいいのでは。
ありがとうございます。
Streamlit Sharingって、自分でビルドしたOpenCVに差し替える、とかできるのですか?
自分でビルドしたOpenCVもPythonコードと一緒にGitHubに置いとけば、いけるのかな??
あなたの回答
tips
プレビュー

