Post

VS Code에서 OpenCV `cv2.IMREAD_COLOR` Pylint 경고 해결하기 (`E1101 no-member`)

VS Code에서 OpenCV `cv2.IMREAD_COLOR` Pylint 경고 해결하기 (`E1101 no-member`)

Python에서 OpenCV를 사용할 때 VS Code에서 아래와 같은 경고가 뜨는 경우가 있다.

1
2
Module 'cv2' has no 'IMREAD_COLOR' member
Pylint(E1101: no-member)

하지만 실제 실행은 정상적으로 된다.

1
2
3
import cv2

img = cv2.imread("test.png", cv2.IMREAD_COLOR)

즉:

  • 실행 정상 ✅
  • VS Code 경고 발생 ⚠️

이 문제는 Pylint가 OpenCV(C extension)를 정적으로 완전히 분석하지 못해서 생기는 false positive다.


원인

cv2는 내부적으로 C/C++ binary extension 기반이다.

Pylint는 Python 코드 AST 분석 중심이라:

1
cv2.IMREAD_COLOR

같은 내부 심볼을 정확히 추론하지 못할 수 있다.

그래서 실제 존재하는 상수인데도:

1
no-member

경고를 낸다.


해결 방법

1. .vscode/settings.json 설정

프로젝트 루트에:

1
.vscode/settings.json

파일 생성 후 아래 설정 추가

1
2
3
4
5
6
7
8
{
    "pylint.importStrategy": "fromEnvironment",
    "pylint.args": [
        "--extension-pkg-allow-list=cv2",
        "--generate-members=cv2.*"
    ],
    "pylint.enabled": true
}

옵션 설명

--extension-pkg-allow-list=cv2

Pylint가 C extension 모듈을 허용

즉:

1
cv2 내부 멤버 분석 허용

--generate-members=cv2.*

동적 생성 멤버까지 허용

OpenCV에서 가장 효과적이다.


2. Pylint 확장 설치 확인

VS Code 확장:

1
Pylint (Microsoft)

설치 필요

확장 ID:

1
ms-python.pylint

3. 적용 후 VS Code 재시작

1
2
Ctrl + Shift + P
Developer: Reload Window

해결 확인

경고 사라짐:

1
img = cv2.imread("test.png", cv2.IMREAD_COLOR)

그래도 안되면 .pylintrc 사용

프로젝트 루트:

1
.pylintrc

생성

1
2
3
[MAIN]
extension-pkg-allow-list=cv2
generated-members=cv2.*

추가 팁

같이 해결되는 OpenCV 경고:

1
2
3
4
5
cv2.imread
cv2.cvtColor
cv2.COLOR_BGR2GRAY
cv2.matchTemplate
cv2.TM_CCOEFF_NORMED

결론

OpenCV + VS Code 조합에서는:

1
실행은 정상인데 Pylint만 오탐

인 경우가 매우 흔하다.

가장 안정적인 해결은:

1
extension-pkg-allow-list + generate-members

조합이다.


This post is licensed under CC BY 4.0 by the author.

© standspring. Some rights reserved.

Using the Chirpy theme for Jekyll.