Python için önceden oluşturulmuş CPU-only OpenCV paketleri.
CUDA gibi ek modülleri etkinleştirmek için bağlamaları kaynaktan derlemek istiyorsanız manuel derleme bölümünü kontrol edin.
-
OpenCV'nin önceki/diğer manuel olarak yüklenmiş (=
pip
ile yüklenmemiş) sürümü yüklüyse (örneğin Python'un site-packages kök dizinindeki cv2 modülü), çakışmaları önlemek için kurulumdan önce kaldırın. -
pip
sürümünüzün güncel olduğundan emin olun (19.3 desteklenen minimum sürümdür): pip install --upgrade pip
. Pip -Vile sürümü kontrol edin. Örneğin Linux dağıtımları genellikle çok eski
pipsürümleriyle birlikte gelir ve bu da özellikle
manylinux` formatında beklenmedik sorunlara neden olur. -
Ortamınız için doğru paketi seçin:
Dört farklı paket vardır (aşağıdaki 1, 2, 3 ve 4 numaralı seçeneklere bakın) ve BUNLARDAN SADECE BİRİNİ SEÇMELİSİNİZ. Aynı ortama birden fazla farklı paket yüklemeyin. Eklenti mimarisi yoktur: tüm paketler aynı ad alanını (
cv2
) kullanır. Aynı ortama birden fazla farklı paket yüklediyseniz, hepsinipip uninstall
ile kaldırın ve yalnızca bir paketi yeniden yükleyin.a. Standart masaüstü ortamları için paketler (Windows, macOS, neredeyse tüm GNU/Linux dağıtımları)
- Seçenek 1 - Ana modül paketi:
pip install opencv-python
- Seçenek 2 - Tam paket (hem ana modülleri hem de contrib/extra modüllerini içerir):
pip install opencv-contrib-python
(OpenCV belgeleri adresindeki contrib/extra modülleri listesini kontrol edin)
b. Sunucu (headless) ortamlar için paketler (Docker, bulut ortamları vb. gibi), GUI kütüphane bağımlılıkları yok
Bu paketler yukarıdaki diğer iki paketten daha küçüktür çünkü herhangi bir GUI işlevi içermezler (Qt / diğer GUI bileşenleri ile derlenmezler). Bu, paketlerin X11 kütüphanelerine ağır bir bağımlılık zincirinden kaçındığı ve sonuç olarak örneğin daha küçük Docker görüntülerine sahip olacağınız anlamına gelir. Eğer
cv2.imshow
ve diğerlerini kullanmıyorsanız veya GUI'nizi oluşturmak için OpenCV'den başka bir paket (PyQt gibi) kullanıyorsanız bu paketleri her zaman kullanmalısınız.- Seçenek 3 - Headless ana modül paketi:
pip install opencv-python-headless
- Seçenek 4 - Headless tam paket (hem ana modülleri hem de contrib/extra modüllerini içerir):
pip install opencv-contrib-python-headless
(OpenCV documentation adresinden contrib/extra modules listesini kontrol edin)
- Seçenek 1 - Ana modül paketi:
-
Paketi içe aktarın:
import cv2
Tüm paketler Haar kaskad dosyalarını içerir.
cv2.data.haarcascades
veri klasörüne kısayol olarak kullanılabilir. Örneğin:cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
-
OpenCV belgelerini okuyun](https://docs.opencv.org/master/)
-
Yeni bir sorun açmadan önce aşağıdaki SSS bölümünü okuyun ve halihazırda açık olan diğer sorunlara göz atın.
**S: OpenCV'yi ayrıca yüklemem gerekiyor mu?
C: Hayır, paketler özel tekerlek ikili paketleridir ve zaten statik olarak oluşturulmuş OpenCV ikili dosyalarını içerirler.
**S: Pip kurulumu ``ModuleNotFoundError: 'skbuild'` adında bir modül yok?
OpenCV-python4.3.0.\* sürümünden bu yana,
manylinux1tekerlekleri
manylinux2014tekerlekleri ile değiştirildi. Eğer pip'iniz çok eskiyse, OpenCV'yi elle derlemek için 4.3.0.38'de sunulan yeni kaynak dağıtımını kullanmaya çalışacaktır çünkü
manylinux2014tekerleklerini nasıl kuracağını bilmemektedir. Ancak,
pyproject.tomliçindeki derleme bağımlılıklarını anlamadığı için çok eski
pipnedeniyle kaynak derleme de başarısız olacaktır. Yeni
manylinux2014önceden oluşturulmuş tekerlekleri kullanmak için (veya kaynaktan derlemek için),
pipsürümünüz >= 19.3 olmalıdır. Lütfen
pipsürümünü
pip install --upgrade pip`` ile yükseltin.
**S: Windows'ta içe aktarma başarısız oluyor: ImportError: DLL yüklemesi başarısız oldu: Belirtilen modül bulunamadı
?
C: Windows'ta içe aktarma başarısız olursa, [Visual C++ redistributable 2015] (https://www.microsoft.com/en-us/download/details.aspx?id=48145) yüklü olduğundan emin olun. Windows 10'dan daha eski bir Windows sürümü kullanıyorsanız ve en son sistem güncellemeleri yüklü değilse, Universal C Runtime da gerekli olabilir.
Windows N ve KN sürümleri OpenCV tarafından gerekli olan Medya Özellik Paketini içermez. Windows N veya KN sürümü kullanıyorsanız, lütfen Windows Media Feature Pack'i de yükleyin.
If you have Windows Server 2012+, media DLLs are probably missing too; please install the Feature called "Media Foundation" in the Server Manager. Beware, some posts advise to install "Windows Server Essentials Media Pack", but this one requires the "Windows Server Essentials Experience" role, and this role will deeply affect your Windows Server configuration (by enforcing active directory integration etc.); so just installing the "Media Foundation" should be a safer choice.
If the above does not help, check if you are using Anaconda. Old Anaconda versions have a bug which causes the error, see this issue for a manual fix.
If you still encounter the error after you have checked all the previous solutions, download Dependencies and open the cv2.pyd
(located usually at C:\Users\username\AppData\Local\Programs\Python\PythonXX\Lib\site-packages\cv2
) file with it to debug missing DLL issues.
Q: I have some other import errors?
A: Make sure you have removed old manual installations of OpenCV Python bindings (cv2.so or cv2.pyd in site-packages).
Q: Function foo() or method bar() returns wrong result, throws exception or crashes interpreter. What should I do?
A: The repository contains only OpenCV-Python package build scripts, but not OpenCV itself. Python bindings for OpenCV are developed in official OpenCV repository and it's the best place to report issues. Also please check {OpenCV wiki](https://github.com/opencv/opencv/wiki) and the official OpenCV forum before file new bugs.
Q: Why the packages do not include non-free algorithms?
A: Non-free algorithms such as SURF are not included in these packages because they are patented / non-free and therefore cannot be distributed as built binaries. Note that SIFT is included in the builds due to patent expiration since OpenCV versions 4.3.0 and 3.4.10. See this issue for more info: opencv#126
Q: Why the package and import are different (opencv-python vs. cv2)?
A: It's easier for users to understand opencv-python
than cv2
and it makes it easier to find the package with search engines. cv2
(old interface in old OpenCV versions was named as cv
) is the name that OpenCV developers chose when they created the binding generators. This is kept as the import name to be consistent with different kind of tutorials around the internet. Changing the import name or behaviour would be also confusing to experienced users who are accustomed to the import cv2
.
The aim of this repository is to provide means to package each new OpenCV release for the most used Python versions and platforms.
The project is structured like a normal Python package with a standard setup.py
file.
The build process for a single entry in the build matrices is as follows (see for example .github/workflows/build_wheels_linux.yml
file):
-
In Linux and MacOS build: get OpenCV's optional C dependencies that we compile against
-
Checkout repository and submodules
- OpenCV is included as submodule and the version is updated manually by maintainers when a new OpenCV release has been made
- Contrib modules are also included as a submodule
-
Find OpenCV version from the sources
-
Build OpenCV
- tests are disabled, otherwise build time increases too much
- there are 4 build matrix entries for each build combination: with and without contrib modules, with and without GUI (headless)
- Linux builds run in manylinux Docker containers (CentOS 5)
- source distributions are separate entries in the build matrix
-
Rearrange OpenCV's build result, add our custom files and generate wheel
-
Linux and macOS wheels are transformed with auditwheel and delocate, correspondingly
-
Install the generated wheel
-
Test that Python can import the library and run some sanity checks
-
Use twine to upload the generated wheel to PyPI (only in release builds)
Steps 1--4 are handled by pip wheel
.
The build can be customized with environment variables. In addition to any variables that OpenCV's build accepts, we recognize:
CI_BUILD
. CI ortamı derleme davranışını taklit etmek için 1
olarak ayarlayın. Sadece CI derlemelerinde setup.py
içinde belirli derleme bayraklarını zorlamak için kullanılır. Ne yaptığınızı bilmiyorsanız bunu kullanmayın.
- ENABLE_CONTRIB
ve
ENABLE_HEADLESS. Contrib ve/veya headless sürümünü derlemek için
1`` olarak ayarlayın ENABLE_JAVA
, Java istemci yapısını etkinleştirmek için1
olarak ayarlayın. Bu varsayılan olarak devre dışıdır.CMAKE_ARGS
. OpenCV'nin CMake çağrısı için ek argümanlar. Bunu özel bir derleme yapmak için kullanabilirsiniz.
CI ortamı dışında manuel derlemeler hakkında daha fazla bilgi için bir sonraki bölüme bakın.
Önceden oluşturulmuş tekerleklerde bazı bağımlılıklar etkinleştirilmemişse, özel bir tekerlek oluşturmak için derlemeyi yerel olarak da çalıştırabilirsiniz.
- Bu depoyu klonlayın:
git clone --recursive https://github.com/opencv/opencv-python.git
cd opencv-python
- Gerekirse
opencv
veopencv_contrib
alt modüllerinde OpenCV'nin başka bir sürümünü kontrol etmek içingit
kullanabilirsiniz
- Gerekirse
- Gerekirse özel Cmake bayrakları ekleyin, örneğin:
export CMAKE_ARGS="-DSOME_FLAG=ON -DSOME_OTHER_FLAG=OFF"
(Windows'ta Komut Satırı veya PowerShell'e bağlı olarak ortam değişkenlerini farklı şekilde ayarlamanız gerekir) - ENABLE_CONTRIB
ve
ENABLE_HEADLESSile oluşturmak istediğiniz paket türünü seçin: örneğin,
opencv-contrib-pythonoluşturmak istiyorsanız
export ENABLE_CONTRIB=1` - Çalıştır
pip wheel . --verbose
komutunu çalıştırın. NOT: En sonpip
sürümüne sahip olduğunuzdan emin olun,pip wheel
komutupyproject.toml
dosyasını desteklemeyen eskipython setup.py bdist_wheel
komutunun yerini alır.- Bu işlem donanımınıza bağlı olarak 5 dakika ile 2 saat arasında sürebilir
- Tekerlek dosyası
dist
klasöründe olacak ve bununla dilediğinizi yapabilirsiniz- İsteğe bağlı: Linux'ta maksimum taşınabilirlik gerekiyorsa derleme ana bilgisayarı olarak
manylinux
görüntülerinden bazılarını kullanın ve derlemeden sonra tekerlek içinauditwheel
çalıştırın - İsteğe bağlı: macOS'ta daha iyi taşınabilirlik için
delocate
(auditwheel
ile aynı ancak macOS için) kullanın
- İsteğe bağlı: Linux'ta maksimum taşınabilirlik gerekiyorsa derleme ana bilgisayarı olarak
Optimize edilmemiş bir hata ayıklama derlemesinde opencv-python
derlemek için, normal süreçten biraz sapmanız gerekir.
- Pip aracılığıyla
scikit-build
venumpy
paketlerini yükleyin. - python setup.py bdist_wheel --build-type=Debug` komutunu çalıştırın.
- Oluşturulan tekerlek dosyasını
pip install dist/wheelname.whl
iledist/
klasörüne yükleyin.
Derlemenin tüm derleyici komutlarını üretmesini istiyorsanız, aşağıdaki bayrak ve ortam değişkenleri kombinasyonunun Linux üzerinde çalıştığı test edilmiştir:
export CMAKE_ARGS='-DCMAKE_VERBOSE_MAKEFILE=ON'
export VERBOSE=1
python3 setup.py bdist_wheel --build-type=Debug
Daha fazla tartışma için bu sayıya bakınız: opencv#424
OpenCV 4.3.0 sürümünden bu yana, PyPI'da kaynak dağıtımları da sağlanmaktadır. Bu, sisteminizin PyPI'daki tekerleklerden herhangi biriyle uyumlu olmadığı anlamına gelir, pip
OpenCV'yi kaynaklardan oluşturmaya çalışacaktır. PyPI'da kaynak dağıtım olarak bulunmayan bir OpenCV sürümüne ihtiyacınız varsa, lütfen bunun yerine yukarıdaki manuel derleme kılavuzunu izleyin.
Ayrıca pip
i tekerlekleri kaynak dağıtımdan oluşturmaya zorlayabilirsiniz. Bazı örnekler:
pip install --no-binary opencv-python opencv-python
pip install --no-binary :all: opencv-python
Eğer contrib modüllerine veya headless sürümüne ihtiyacınız varsa, sadece paket adını değiştirin (önceki bölümdeki 4. adım gerekli değildir). Bununla birlikte, herhangi bir ek CMake bayrağı, manuel derleme bölümünün 3. adımında açıklandığı gibi ortam değişkenleri aracılığıyla sağlanabilir. Hiçbiri sağlanmamışsa, OpenCV'nin CMake komut dosyaları uygun bağımlılıkları bulmaya ve etkinleştirmeye çalışacaktır. Headless dağıtımları, tüm olası GUI bağımlılıklarını devre dışı bırakan sabit kodlanmış CMake bayraklarına sahiptir.
Raspberry Pi gibi yavaş sistemlerde tam derleme birkaç saat sürebilir. 8 çekirdekli Ryzen 7 3700X üzerinde derleme yaklaşık 6 dakika sürer.
Opencv-python paketi (bu depodaki betikler) MIT lisansı altında mevcuttur.
OpenCV'nin kendisi Apache 2 lisansı altında mevcuttur.
Üçüncü taraf paket lisansları LICENSE-3RD-PARTY.txt adresindedir.
Tüm tekerlekler LGPLv2.1 lisansı altında FFmpeg ile birlikte gönderilir.
Başlıksız Linux tekerlekleri LGPLv3 altında lisanslanan Qt 5 ile birlikte gönderilir.
Paketler diğer ikili dosyaları da içerir. Lisansların tam listesi LICENSE-3RD-PARTY.txt adresinde bulunabilir.
find_version.py
betiği OpenCV kaynaklarından sürüm bilgilerini arar ve sürüm dizesine bu depoya özgü bir revizyon numarası da ekler. Sürüm bilgisini diğer bazı bayraklara ek olarak cv2
altındaki version.py
dosyasına kaydeder.
Yeni bir etiket ana dala itildiğinde bir sürüm yapılır ve PyPI'a yüklenir. Bu etiketler paketleri birbirinden ayırır (bu repoda değişiklikler olabilir ancak OpenCV sürümü aynı kalır) ve sırayla artırılmalıdır. Uygulamada, sürüm numaraları şu şekilde görünür:
cv_major.cv_minor.cv_revision.package_revision
örneğin 3.1.0.0
Ana dal OpenCV ana dal sürümlerini takip eder. 3.4 dalı OpenCV 3.4 hata düzeltme sürümlerini takip eder.
Bu deponun ana dalına yapılan her işlem derlenecektir. Olası derleme eserleri yerel sürüm tanımlayıcılarını kullanır:
cv_major.cv_minor.cv_revision+git_hash_of_this_repo
örneğin 3.1.0+14a8d39
Bu eserler PyPI'a yüklenemez ve yüklenmeyecektir.
Linux tekerlekleri manylinux2014 kullanılarak oluşturulmuştur. Bu tekerlekler, eski bir glibc sürümüne karşı oluşturulduğundan, çoğu dağıtım (GNU C standart kütüphanesini kullanan) için kutudan çıkar çıkmaz çalışmalıdır.
Varsayılan manylinux2014
görüntüleri bazı OpenCV bağımlılıkları ile genişletilmiştir. Daha fazla bilgi için Docker folder adresine bakın.
Python 3.x uyumlu önceden oluşturulmuş tekerlekler, resmi olarak desteklenen Python sürümleri için sağlanmıştır (EOL'de değil):
- 3.6
- 3.7
- 3.8
- 3.9
- 3.10
4.2.0 ve 3.4.9 sürümlerinden başlayarak macOS Travis derleme ortamı XCode 9.4'e güncellendi. Bu değişiklik, 10.13 macOS sürümünden daha eski sürümler için desteği etkin bir şekilde ortadan kaldırdı.
4.3.0 ve 3.4.10 sürümlerinden itibaren Linux derleme ortamı manylinux1
den manylinux2014
e güncellendi. Böylece eski Linux dağıtımları için destek kesildi.