ModuleNotFoundError: No module named 'cv2' Streamlit

Hi All,

I am trying to deploy an app that uses opencv. I have tried all the permutations so far by adding “opencv-python-headless” / “opencv-python” or “opencv-contrib-python”. I have also added packages.txt to remove the error “libGL.so.1: cannot open shared object file: No such file or directory”.
But still below error exists no matter what I try .

Traceback (most recent call last):
  File "detect.py", line 14, in <module>
ModuleNotFoundError: No module named 'cv2'

Contents of requirements.txt:
numpy
opencv-python
easyocr==1.4.1
matplotlib==3.4.3
matplotlib-inline==0.1.3
pandas==1.3.4
pandocfilters==1.5.0
Pillow==8.2.0
requests==2.26.0
scikit-image==0.18.3
scipy==1.7.1
seaborn==0.11.2
streamlit==1.0.0
torch==1.9.1
torchvision==0.10.1
tqdm==4.62.3

contents of packages.txt:
freeglut3-dev
libgtk2.0-dev
libgl1-mesa-glx

Kindly assist me in resolving the issue so that this error does not occur. Also, I have followed through other similar issues.

This is my GitHub Repository:

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

1 Like

Thanks a million Snehan. Cannot thank enough :slight_smile: :innocent: