ModuleNotFoundError: No module named 'cv2' Streamlit

Hi @Shubham_Singh, welcome to the community! :wave: :partying_face:

The error is caused by line 137 of your app, where you run a Python script in a subprocess.

  1. The packages in your requirements file are installed in a virtual environment. The Python binary used in this virtual env is found at /home/appuser/venv/bin/python
  2. In line 137 of your app, you run python detect.py --weights ... via a subprocess. This Python binary is not the one used in the virtual env where your packages, including opencv-python-headless , are installed.
  3. Change line 137 to the following:
detectCommand = "/home/appuser/venv/bin/python detect.py --weights ./resources/weights/best.pt --source ./resources/test_image/businessCard/ --img 512 --conf 0.6 --save-crop --save-conf --line-thickness 2 --iou-thres 0.5 --save-txt --name results"
  1. Replace opencv-python in your requirements file with opencv-python-headless
  2. Delete packages.txt
  3. Reboot your app

Once you make the above changes, your detection script will run fine :slightly_smiling_face:

Happy Streamlit-ing! :balloon:
Snehan

3 Likes