PyLint not recognizing cv2 members

OpencvVisual Studio-CodePylint

Opencv Problem Overview


I am running pylint on an opencv project and I am getting many pylint errors in VS code about members not being present.

Example code:

import cv2
cv2.imshow(....)

Errors obtained:

enter image description here

However , the code runs correctly without any errors.

Versions : pylint 1.8.1 , astroid 1.6.0

Opencv Solutions


Solution 1 - Opencv

This is from pylint. You can generate a pylint config file in the root of your project with this command: (I find this to be helpful if you work in a team or on different computers from the same repo)

pylint --generate-rcfile > ~/.pylintrc

At the beginning of the generated .pylintrc file you will see

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=

Add cv2 so you end up with

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=cv2

Save the file. The lint errors should disappear.

Solution 2 - Opencv

  1. On VScode: CTRL + Shift + P
  2. Choose "Preferences: Open Settings (JSON)"
  3. Add this line into JSON file: "python.linting.pylintArgs": ["--generate-members"]

Done, it works for me

Note: Make sure you choose "Preferences: Open Settings (JSON)", not "Preferences: Open Default Settings (JSON)"

Setting File would look like

{
"workbench.iconTheme": "vscode-icons",
"python.dataScience.sendSelectionToInteractiveWindow": true,
"kite.showWelcomeNotificationOnStartup": false,
"python.dataScience.askForKernelRestart": false,
"python.dataScience.jupyterServerURI": "local",
"python.pythonPath": "/usr/bin/python3",
"workbench.colorTheme": "Monokai",
"vsicons.dontShowNewVersionMessage": true,
"python.linting.pylintArgs": ["--generate-members"] }

Solution 3 - Opencv

Try import cv2 like this: from cv2 import cv2.

Solution 4 - Opencv

Yes it is because the extension has not been installed. Set this: extension-pkg-whitelist=cv2 and you're good to go. However it may not detect the functions or modules implemented in cv2

enter image description here

Solution 5 - Opencv

Here the code snippet for the settings.json file in MS V Code

"python.linting.pylintArgs":["--extension-pkg-whitelist=cv2"]

Solution 6 - Opencv

I didn't have to change anything in the pylint Jason file like the most of the answers here My solution is to change the import statement to the form below

from cv2 import cv2

Eventually, cv2 members can be used!

Solution 7 - Opencv

I used below config settings in settings.json of vscode and it helped me avoid the unessential flags by pylint, and also got intellisense for cv2 working, it it doesn't work try uninstalling and deleting cv2 packages from C:\Anaconda3\envs\demo1\Lib\site-packages folder, and reinstalling opencv-python package

{
"python.linting.pylintEnabled": true,
  "python.linting.enabled": true,
  "python.linting.pylintArgs": [
    "--extension-pkg-whitelist=cv2"
  ]
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKitwradrView Question on Stackoverflow
Solution 1 - OpencvGabriel P.View Answer on Stackoverflow
Solution 2 - OpencvManas shuklaView Answer on Stackoverflow
Solution 3 - OpencvPhilipView Answer on Stackoverflow
Solution 4 - OpencvPrajval MView Answer on Stackoverflow
Solution 5 - OpencvZailuxView Answer on Stackoverflow
Solution 6 - OpencvAli.M.KamelView Answer on Stackoverflow
Solution 7 - Opencvtechieguy007View Answer on Stackoverflow