OpenCV는 모든 사람이 라이브러리를 무료로 유지하기 위해 기금을 모으고 있으며 이를 위해서는 전체 커뮤니티의 지원이 필요합니다. 여러분의 지지를 보여주기 위해 Github의 OpenCV에 기부하세요.
Python용으로 사전 빌드된 CPU 전용 OpenCV 패키지입니다.
CUDA와 같은 추가 모듈을 활성화하기 위해 소스에서 바인딩을 컴파일하려면 수동 빌드 섹션을 확인하세요.
이전/기타 OpenCV 버전을 수동으로 설치한 경우(= pip
통해 설치하지 않음) 설치된 경우(예: Python 사이트 패키지의 루트에 있는 cv2 모듈) 충돌을 피하기 위해 설치하기 전에 제거하세요.
pip
버전이 최신인지 확인하세요(최소 지원 버전은 19.3입니다): pip install --upgrade pip
. pip -V
로 버전을 확인하세요. 예를 들어 Linux 배포판은 일반적으로 매우 오래된 pip
버전과 함께 제공되며 특히 manylinux
형식에서 예상치 못한 많은 문제를 일으킵니다.
귀하의 환경에 맞는 패키지를 선택하세요:
네 가지 패키지가 있으며(아래 옵션 1, 2, 3, 4 참조) 그중 하나만 선택 해야 합니다. 동일한 환경에 여러 다른 패키지를 설치하지 마십시오. 플러그인 아키텍처가 없습니다. 모든 패키지는 동일한 네임스페이스( cv2
)를 사용합니다. 동일한 환경에 여러 패키지를 설치한 경우 pip uninstall
사용하여 모두 제거하고 패키지 하나만 다시 설치하세요.
에이. 표준 데스크탑 환경용 패키지(Windows, macOS, 거의 모든 GNU/Linux 배포판)
pip install opencv-python
pip install opencv-contrib-python
(OpenCV 설명서에서 contrib/extra 모듈 목록 확인)비. 서버(헤드리스) 환경(예: Docker, 클라우드 환경 등)용 패키지, GUI 라이브러리 종속성 없음
이 패키지는 GUI 기능을 포함하지 않기 때문에(Qt/기타 GUI 구성 요소로 컴파일되지 않음) 위의 다른 두 패키지보다 작습니다. 이는 패키지가 X11 라이브러리에 대한 과도한 종속성 체인을 피하고 결과적으로 더 작은 Docker 이미지를 갖게 된다는 것을 의미합니다. cv2.imshow
등을 사용하지 않는 경우 항상 이 패키지를 사용해야 합니다. 또는 OpenCV가 아닌 다른 패키지(예: PyQt)를 사용하여 GUI를 생성하고 있습니다.
pip install opencv-python-headless
pip install opencv-contrib-python-headless
(OpenCV 문서에서 contrib/extra 모듈 목록 확인)패키지를 가져옵니다.
import cv2
모든 패키지에는 Haar 캐스케이드 파일이 포함되어 있습니다. cv2.data.haarcascades
데이터 폴더에 대한 바로가기로 사용할 수 있습니다. 예를 들어:
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
OpenCV 문서 읽기
새 이슈를 열기 전에 아래 FAQ를 읽고 이미 열려 있는 다른 이슈를 살펴보세요.
Q: OpenCV도 별도로 설치해야 하나요?
A: 아니요, 패키지는 특수 휠 바이너리 패키지이며 이미 정적으로 빌드된 OpenCV 바이너리를 포함하고 있습니다.
Q: ModuleNotFoundError: No module named 'skbuild'
으로 인해 Pip 설치가 실패합니까?
opencv-python
버전 4.3.0.*부터 manylinux1
휠은 manylinux2014
휠로 대체되었습니다. pip가 너무 오래된 경우 4.3.0.38에 도입된 새로운 소스 배포판을 사용하여 OpenCV를 수동으로 빌드하려고 시도합니다. 왜냐하면 manylinux2014
휠을 설치하는 방법을 모르기 때문입니다. 그러나 pyproject.toml
의 빌드 종속성을 이해하지 못하기 때문에 너무 오래된 pip
로 인해 소스 빌드도 실패합니다. 새로운 manylinux2014
사전 빌드 휠을 사용하려면(또는 소스에서 빌드하려면) pip
버전이 19.3 이상이어야 합니다. pip install --upgrade pip
사용하여 pip
업그레이드하세요.
Q: Windows에서 가져오기 실패: ImportError: DLL load failed: The specified module could not be found.
?
A: Windows에서 가져오기가 실패하는 경우 Visual C++ 재배포 가능 패키지 2015가 설치되어 있는지 확인하세요. Windows 10보다 이전 버전의 Windows를 사용 중이고 최신 시스템 업데이트가 설치되지 않은 경우 Universal C Runtime도 필요할 수 있습니다.
Windows N 및 KN 버전에는 OpenCV에 필요한 미디어 기능 팩이 포함되어 있지 않습니다. Windows N 또는 KN 버전을 사용하는 경우 Windows Media 기능 팩도 설치하십시오.
Windows Server 2012+를 사용하는 경우 미디어 DLL도 누락되었을 수 있습니다. 서버 관리자에서 "Media Foundation"이라는 기능을 설치하십시오. 일부 게시물에서는 "Windows Server Essentials Media Pack"을 설치하도록 권장하지만 이 경우에는 "Windows Server Essentials Experience" 역할이 필요하며 이 역할은 Active Directory 통합 시행 등을 통해 Windows Server 구성에 큰 영향을 미칩니다. 따라서 "미디어 파운데이션"을 설치하는 것이 더 안전한 선택이 될 것입니다.
위의 내용이 도움이 되지 않으면 Anaconda를 사용하고 있는지 확인하세요. 이전 Anaconda 버전에는 오류를 일으키는 버그가 있습니다. 수동 수정은 이 문제를 참조하세요.
이전 해결 방법을 모두 확인한 후에도 여전히 오류가 발생하는 경우 종속성을 다운로드하고 cv2.pyd
(일반적으로 C:UsersusernameAppDataLocalProgramsPythonPythonXXLibsite-packagescv2
) 파일을 사용하여 누락된 DLL 문제를 디버깅할 수 있습니다.
Q: 다른 가져오기 오류가 있습니까?
A: OpenCV Python 바인딩(site-packages의 cv2.so 또는 cv2.pyd)의 이전 수동 설치를 제거했는지 확인하십시오.
Q: foo() 함수 또는 bar() 메서드가 잘못된 결과를 반환하거나, 예외가 발생하거나, 인터프리터가 충돌합니다. 어떻게 해야 하나요?
A: 저장소에는 OpenCV-Python 패키지 빌드 스크립트만 포함되어 있고 OpenCV 자체는 포함되어 있지 않습니다. OpenCV용 Python 바인딩은 공식 OpenCV 저장소에서 개발되었으며 문제를 보고하기에 가장 좋은 장소입니다. 또한 새로운 버그를 신고하기 전에 OpenCV 위키와 공식 OpenCV 포럼을 확인하세요.
Q: 패키지에 비자유 알고리즘이 포함되지 않은 이유는 무엇입니까?
A: SURF와 같은 비자유 알고리즘은 특허를 받았거나 비자유이므로 빌드된 바이너리로 배포할 수 없기 때문에 이러한 패키지에 포함되지 않습니다. OpenCV 버전 4.3.0 및 3.4.10 이후 특허 만료로 인해 SIFT가 빌드에 포함되었습니다. 자세한 내용은 이 문제를 참조하세요: #126
Q: 패키지와 가져오기가 다른 이유는 무엇입니까(opencv-python과 cv2)?
A: 사용자는 cv2
보다 opencv-python
이해하기 쉽고 검색 엔진으로 패키지를 더 쉽게 찾을 수 있습니다. cv2
(이전 OpenCV 버전의 이전 인터페이스 이름은 cv
)는 OpenCV 개발자가 바인딩 생성기를 만들 때 선택한 이름입니다. 이는 인터넷에 있는 다양한 종류의 튜토리얼과 일관성을 유지하기 위해 가져오기 이름으로 유지됩니다. 가져오기 이름이나 동작을 변경하는 것은 import cv2
에 익숙한 숙련된 사용자에게도 혼란스러울 수 있습니다.
이 저장소의 목적은 가장 많이 사용되는 Python 버전 및 플랫폼에 대해 각각의 새로운 OpenCV 릴리스를 패키징하는 수단을 제공하는 것입니다.
프로젝트는 표준 setup.py
파일이 있는 일반 Python 패키지처럼 구성됩니다. 빌드 매트릭스의 단일 항목에 대한 빌드 프로세스는 다음과 같습니다(예: .github/workflows/build_wheels_linux.yml
파일 참조).
Linux 및 MacOS 빌드: 컴파일할 OpenCV의 선택적 C 종속성을 가져옵니다.
체크아웃 저장소 및 하위 모듈
소스에서 OpenCV 버전 찾기
OpenCV 빌드
OpenCV의 빌드 결과를 재정렬하고 사용자 정의 파일을 추가하고 휠을 생성합니다.
Linux 및 macOS 휠은 auditwheel로 변환되고 그에 따라 할당 해제됩니다.
생성된 휠 설치
Python이 라이브러리를 가져올 수 있는지 테스트하고 일부 온전성 검사를 실행할 수 있습니다.
꼬기를 사용하여 생성된 휠을 PyPI에 업로드합니다(릴리스 빌드에서만)
1~4단계는 pip wheel
처리됩니다.
환경 변수를 사용하여 빌드를 사용자 정의할 수 있습니다. OpenCV 빌드에서 허용하는 모든 변수 외에도 다음을 인식합니다.
CI_BUILD
. CI 환경 빌드 동작을 에뮬레이션하려면 1
로 설정합니다. setup.py
에서 특정 빌드 플래그를 강제 적용하기 위해 CI 빌드에서만 사용됩니다. 당신이 무엇을 하고 있는지 알지 못한다면 이것을 사용하지 마십시오.ENABLE_CONTRIB
및 ENABLE_HEADLESS
. contrib 및/또는 헤드리스 버전을 빌드하려면 1
로 설정하세요.ENABLE_JAVA
, Java 클라이언트 빌드를 활성화하려면 1
로 설정합니다. 이는 기본적으로 비활성화되어 있습니다.CMAKE_ARGS
. OpenCV의 CMake 호출을 위한 추가 인수입니다. 이를 사용하여 사용자 정의 빌드를 만들 수 있습니다.CI 환경 외부의 수동 빌드에 대한 자세한 내용은 다음 섹션을 참조하세요.
사전 빌드된 휠에서 일부 종속성이 활성화되지 않은 경우 로컬에서 빌드를 실행하여 사용자 정의 휠을 생성할 수도 있습니다.
git clone --recursive https://github.com/opencv/opencv-python.git
cd opencv-python
git
사용하여 opencv
및 opencv_contrib
하위 모듈에서 다른 버전의 OpenCV를 체크아웃할 수 있습니다.export CMAKE_ARGS="-DSOME_FLAG=ON -DSOME_OTHER_FLAG=OFF"
(Windows에서는 명령줄 또는 PowerShell에 따라 환경 변수를 다르게 설정해야 함)ENABLE_CONTRIB
및 ENABLE_HEADLESS
로 빌드하려는 패키지 버전을 선택하십시오. 즉 opencv-contrib-python
빌드하려면 export ENABLE_CONTRIB=1
pip wheel . --verbose
. 참고: 최신 pip
버전이 있는지 확인하세요. pip wheel
명령은 pyproject.toml
지원하지 않는 이전 python setup.py bdist_wheel
명령을 대체합니다.setup.py
파일에 이전 접근 방식을 사용하면 휠 패키지가 dist
폴더에 배치됩니다. 패키지가 준비되었으며 원하는 대로 무엇이든 할 수 있습니다.manylinux
이미지 중 일부를 빌드 호스트로 사용하고 빌드 후 휠에 대해 auditwheel
실행합니다.delocate
( auditwheel
과 동일하지만 macOS의 경우)를 사용합니다. 최적화되지 않은 디버그 빌드에서 opencv-python
빌드하려면 일반 프로세스를 약간 우회해야 합니다.
scikit-build
및 numpy
패키지를 설치합니다.python setup.py bdist_wheel --build-type=Debug
명령을 실행합니다.pip install dist/wheelname.whl
사용하여 생성된 휠 파일을 dist/
폴더에 설치합니다.빌드에서 모든 컴파일러 명령을 생성하려면 다음 플래그와 환경 변수 조합이 Linux에서 작동하도록 테스트되었습니다.
export CMAKE_ARGS='-DCMAKE_VERBOSE_MAKEFILE=ON'
export VERBOSE=1
python3 setup.py bdist_wheel --build-type=Debug
자세한 내용은 이 문제를 참조하세요: #424
OpenCV 버전 4.3.0부터 PyPI에서도 소스 배포판이 제공됩니다. 이는 시스템이 PyPI의 휠과 호환되지 않는 경우 pip
소스에서 OpenCV를 빌드하려고 시도한다는 것을 의미합니다. PyPI에서 소스 배포판으로 사용할 수 없는 OpenCV 버전이 필요한 경우 이 지침 대신 위의 수동 빌드 지침을 따르세요.
pip
소스 배포판에서 휠을 빌드하도록 강제할 수도 있습니다. 몇 가지 예:
pip install --no-binary opencv-python opencv-python
pip install --no-binary :all: opencv-python
contrib 모듈이나 헤드리스 버전이 필요한 경우 패키지 이름만 변경하면 됩니다(이전 섹션의 4단계는 필요하지 않음). 그러나 수동 빌드 섹션의 3단계에 설명된 대로 환경 변수를 통해 추가 CMake 플래그를 제공할 수 있습니다. 아무 것도 제공되지 않으면 OpenCV의 CMake 스크립트는 적합한 종속성을 찾아서 활성화하려고 시도합니다. 헤드리스 배포판에는 가능한 모든 GUI 종속성을 비활성화하는 하드 코딩된 CMake 플래그가 있습니다.
Raspberry Pi와 같은 느린 시스템에서는 전체 빌드에 몇 시간이 걸릴 수 있습니다. 8코어 Ryzen 7 3700X에서는 빌드에 약 6분이 소요됩니다.
Opencv-python 패키지(이 저장소의 스크립트)는 MIT 라이선스에 따라 사용할 수 있습니다.
OpenCV 자체는 Apache 2 라이센스에 따라 사용할 수 있습니다.
타사 패키지 라이센스는 LICENSE-3RD-PARTY.txt에 있습니다.
모든 휠은 LGPLv2.1에 따라 라이센스가 부여된 FFmpeg와 함께 배송됩니다.
헤드리스가 없는 Linux 휠은 LGPLv3에 따라 라이센스가 부여된 Qt 5와 함께 제공됩니다.
패키지에는 다른 바이너리도 포함되어 있습니다. 전체 라이센스 목록은 LICENSE-3RD-PARTY.txt에서 확인할 수 있습니다.
find_version.py
스크립트는 OpenCV 소스에서 버전 정보를 검색하고 이 저장소와 관련된 개정 번호도 버전 문자열에 추가합니다. 다른 플래그와 함께 cv2
아래의 version.py
파일에 버전 정보를 저장합니다.
새 태그가 마스터 브랜치에 푸시되면 릴리스가 작성되어 PyPI에 업로드됩니다. 이러한 태그는 패키지를 구별하며(이 저장소에는 수정 사항이 있을 수 있지만 OpenCV 버전은 동일하게 유지됨) 순차적으로 증가해야 합니다. 실제로 릴리스 버전 번호는 다음과 같습니다.
cv_major.cv_minor.cv_revision.package_revision
예: 3.1.0.0
마스터 브랜치는 OpenCV 마스터 브랜치 릴리스를 따릅니다. 3.4 브랜치는 OpenCV 3.4 버그 수정 릴리스를 따릅니다.
이 리포지토리의 마스터 브랜치에 대한 모든 커밋이 빌드됩니다. 가능한 빌드 아티팩트는 로컬 버전 식별자를 사용합니다.
cv_major.cv_minor.cv_revision+git_hash_of_this_repo
예: 3.1.0+14a8d39
이러한 아티팩트는 PyPI에 업로드될 수 없으며 업로드되지 않습니다.
Linux 휠은 ManyLinux2014를 사용하여 제작되었습니다. 이 휠은 이전 버전의 glibc에 대해 구축되었으므로 대부분의 배포판(GNU C 표준 라이브러리 사용)에서 즉시 작동해야 합니다.
기본 manylinux2014
이미지는 일부 OpenCV 종속성을 포함하여 확장되었습니다. 자세한 내용은 Docker 폴더를 참조하세요.
공식적으로 지원되는 Python 버전(EOL 아님)에는 Python 3.x 호환 사전 빌드 휠이 제공됩니다.
4.2.0 및 3.4.9 빌드부터 macOS Travis 빌드 환경이 XCode 9.4로 업데이트되었습니다. 이 변경으로 인해 10.13 이전 macOS 버전에 대한 지원이 사실상 중단되었습니다.
4.3.0 및 3.4.10 빌드부터 Linux 빌드 환경이 manylinux1
에서 manylinux2014
로 업데이트되었습니다. 이로 인해 이전 Linux 배포판에 대한 지원이 중단되었습니다.
버전 4.7.0부터 Mac OS GitHub Actions 빌드 환경이 버전 11로 업데이트되었습니다. Mac OS 10.x 지원이 중단되었습니다. 작업/러너 이미지#5583을 참조하세요.
버전 4.9.0부터 Mac OS GitHub Actions 빌드 환경이 버전 12로 업데이트되었습니다. Mac OS 10.x 지원은 Brew 및 대부분의 사용 패키지에서 더 이상 지원되지 않습니다.