OpenCV menggalang dana agar perpustakaan tetap gratis bagi semua orang, dan kami memerlukan dukungan seluruh komunitas untuk melakukannya. Donasi ke OpenCV di Github untuk menunjukkan dukungan Anda.
Paket OpenCV khusus CPU yang dibuat sebelumnya untuk Python.
Periksa bagian pembuatan manual jika Anda ingin mengkompilasi pengikatan dari sumber untuk mengaktifkan modul tambahan seperti CUDA.
Jika Anda telah menginstal OpenCV versi sebelumnya/lainnya secara manual (= tidak diinstal melalui pip
) (misalnya modul cv2 di root paket situs Python), hapus sebelum instalasi untuk menghindari konflik.
Pastikan versi pip
Anda mutakhir (19.3 adalah versi minimum yang didukung): pip install --upgrade pip
. Periksa versi dengan pip -V
. Misalnya distribusi Linux biasanya dikirimkan dengan versi pip
yang sangat lama yang menyebabkan banyak masalah tak terduga terutama dengan format manylinux
.
Pilih paket yang tepat untuk lingkungan Anda:
Ada empat paket berbeda (lihat opsi 1, 2, 3 dan 4 di bawah) dan Anda harus MEMILIH HANYA SALAH SATU DARI MEREKA . Jangan menginstal beberapa paket berbeda di lingkungan yang sama. Tidak ada arsitektur plugin: semua paket menggunakan namespace yang sama ( cv2
). Jika Anda menginstal beberapa paket berbeda di lingkungan yang sama, hapus instalan semuanya dengan pip uninstall
dan instal ulang hanya satu paket.
A. Paket untuk lingkungan desktop standar (Windows, macOS, hampir semua distribusi GNU/Linux)
pip install opencv-python
pip install opencv-contrib-python
(periksa daftar contrib/modul tambahan dari dokumentasi OpenCV)B. Paket untuk lingkungan server (tanpa kepala) (seperti Docker, lingkungan cloud, dll.), tidak ada ketergantungan perpustakaan GUI
Paket-paket ini lebih kecil dari dua paket lain di atas karena tidak mengandung fungsionalitas GUI apa pun (tidak dikompilasi dengan Qt/komponen GUI lainnya). Ini berarti bahwa paket-paket tersebut menghindari rantai ketergantungan yang berat pada pustaka X11 dan sebagai hasilnya Anda akan mendapatkan image Docker yang lebih kecil. Anda harus selalu menggunakan paket ini jika Anda tidak menggunakan cv2.imshow
dkk. atau Anda menggunakan paket lain (seperti PyQt) selain OpenCV untuk membuat GUI Anda.
pip install opencv-python-headless
pip install opencv-contrib-python-headless
(periksa daftar contrib/modul tambahan dari dokumentasi OpenCV)Impor paket:
import cv2
Semua paket berisi file kaskade Haar. cv2.data.haarcascades
dapat digunakan sebagai shortcut ke folder data. Misalnya:
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
Baca dokumentasi OpenCV
Sebelum membuka terbitan baru, baca FAQ di bawah dan lihat terbitan lain yang sudah terbuka.
T: Apakah saya perlu menginstal OpenCV juga secara terpisah?
J: Tidak, paket tersebut adalah paket biner roda khusus dan sudah berisi binari OpenCV yang dibuat secara statis.
T: Pemasangan pip gagal dengan ModuleNotFoundError: No module named 'skbuild'
?
Sejak opencv-python
versi 4.3.0.*, banyak roda manylinux1
digantikan oleh roda manylinux2014
. Jika pip Anda terlalu lama, ia akan mencoba menggunakan distribusi sumber baru yang diperkenalkan pada 4.3.0.38 untuk membangun OpenCV secara manual karena tidak mengetahui cara memasang roda manylinux2014
. Namun, source build juga akan gagal karena pip
terlalu lama karena tidak memahami dependensi build di pyproject.toml
. Untuk menggunakan roda manylinux2014
baru yang dibuat sebelumnya (atau untuk membangun dari sumber), versi pip
Anda harus >= 19.3. Harap tingkatkan pip
dengan pip install --upgrade pip
.
T: Impor gagal di Windows: ImportError: DLL load failed: The specified module could not be found.
?
J: Jika impor gagal di Windows, pastikan Anda telah menginstal Visual C++ redistributable 2015. Jika Anda menggunakan versi Windows yang lebih lama dari Windows 10 dan pembaruan sistem terbaru tidak diinstal, Universal C Runtime mungkin juga diperlukan.
Edisi Windows N dan KN tidak menyertakan Paket Fitur Media yang diperlukan oleh OpenCV. Jika Anda menggunakan Windows N atau KN edition, silakan instal juga Windows Media Feature Pack.
Jika Anda memiliki Windows Server 2012+, DLL media mungkin juga hilang; silakan instal Fitur yang disebut "Media Foundation" di Server Manager. Hati-hati, beberapa posting menyarankan untuk menginstal "Windows Server Essentials Media Pack", tetapi yang ini memerlukan peran "Windows Server Essentials Experience", dan peran ini akan sangat mempengaruhi konfigurasi Windows Server Anda (dengan menerapkan integrasi direktori aktif, dll.); jadi menginstal "Media Foundation" saja sudah menjadi pilihan yang lebih aman.
Jika cara di atas tidak membantu, periksa apakah Anda menggunakan Anaconda. Versi Anaconda lama memiliki bug yang menyebabkan kesalahan, lihat masalah ini untuk perbaikan manual.
Jika Anda masih mengalami kesalahan setelah memeriksa semua solusi sebelumnya, unduh Dependensi dan buka cv2.pyd
(biasanya terletak di C:UsersusernameAppDataLocalProgramsPythonPythonXXLibsite-packagescv2
) untuk men-debug masalah DLL yang hilang.
T: Saya mengalami kesalahan impor lainnya?
J: Pastikan Anda telah menghapus instalasi manual lama dari binding OpenCV Python (cv2.so atau cv2.pyd di paket situs).
T: Fungsi foo() atau metode bar() mengembalikan hasil yang salah, memunculkan pengecualian, atau membuat interpreter crash. Apa yang harus saya lakukan?
J: Repositori hanya berisi skrip pembuatan paket OpenCV-Python, tetapi tidak berisi OpenCV itu sendiri. Binding Python untuk OpenCV dikembangkan di repositori resmi OpenCV dan merupakan tempat terbaik untuk melaporkan masalah. Silakan periksa juga wiki OpenCV dan forum resmi OpenCV sebelum melaporkan bug baru.
Q: Mengapa paket tidak menyertakan algoritma non-bebas?
J: Algoritme tidak bebas seperti SURF tidak disertakan dalam paket ini karena algoritma tersebut dipatenkan/tidak bebas dan oleh karena itu tidak dapat didistribusikan sebagai binari yang dibuat. Perhatikan bahwa SIFT disertakan dalam build karena masa berlaku paten sudah habis sejak OpenCV versi 4.3.0 dan 3.4.10. Lihat terbitan ini untuk informasi lebih lanjut: #126
T: Mengapa paket dan impornya berbeda (opencv-python vs. cv2)?
J: Lebih mudah bagi pengguna untuk memahami opencv-python
dibandingkan cv2
dan lebih mudah menemukan paket dengan mesin pencari. cv2
(antarmuka lama di versi OpenCV lama dinamai cv
) adalah nama yang dipilih pengembang OpenCV saat mereka membuat generator pengikat. Ini disimpan sebagai nama impor agar konsisten dengan berbagai jenis tutorial di internet. Mengubah nama atau perilaku impor juga akan membingungkan pengguna berpengalaman yang terbiasa dengan import cv2
.
Tujuan dari repositori ini adalah menyediakan sarana untuk mengemas setiap rilis OpenCV baru untuk versi dan platform Python yang paling banyak digunakan.
Proyek ini terstruktur seperti paket Python normal dengan file setup.py
standar. Proses pembangunan untuk satu entri dalam matriks pembangunan adalah sebagai berikut (lihat misalnya file .github/workflows/build_wheels_linux.yml
):
Di versi Linux dan MacOS: dapatkan dependensi C opsional OpenCV yang kami kompilasi
Periksa repositori dan submodul
Temukan versi OpenCV dari sumbernya
Membangun OpenCV
Atur ulang hasil build OpenCV, tambahkan file khusus kami dan buat wheel
Roda Linux dan macOS diubah dengan roda audit dan delokasi
Pasang roda yang dihasilkan
Uji apakah Python dapat mengimpor perpustakaan dan menjalankan beberapa pemeriksaan kewarasan
Gunakan benang untuk mengunggah roda yang dihasilkan ke PyPI (hanya dalam versi rilis)
Langkah 1--4 ditangani oleh pip wheel
.
Build dapat dikustomisasi dengan variabel lingkungan. Selain variabel apa pun yang diterima oleh build OpenCV, kami mengenali:
CI_BUILD
. Setel ke 1
untuk meniru perilaku pembangunan lingkungan CI. Hanya digunakan di build CI untuk memaksa flag build tertentu aktif di setup.py
. Jangan gunakan ini kecuali Anda tahu apa yang Anda lakukan.ENABLE_CONTRIB
dan ENABLE_HEADLESS
. Setel ke 1
untuk membuat versi contrib dan/atau headlessENABLE_JAVA
, Setel ke 1
untuk mengaktifkan build klien Java. Ini dinonaktifkan secara default.CMAKE_ARGS
. Argumen tambahan untuk pemanggilan CMake OpenCV. Anda dapat menggunakan ini untuk membuat bangunan khusus.Lihat bagian selanjutnya untuk informasi selengkapnya tentang pembuatan manual di luar lingkungan CI.
Jika beberapa ketergantungan tidak diaktifkan pada roda yang dibuat sebelumnya, Anda juga dapat menjalankan pembangunan secara lokal untuk membuat roda khusus.
git clone --recursive https://github.com/opencv/opencv-python.git
cd opencv-python
git
untuk memeriksa beberapa versi OpenCV lainnya di submodul opencv
dan opencv_contrib
jika diperlukanexport CMAKE_ARGS="-DSOME_FLAG=ON -DSOME_OTHER_FLAG=OFF"
(di Windows Anda perlu mengatur variabel lingkungan secara berbeda tergantung pada Command Line atau PowerShell)ENABLE_CONTRIB
dan ENABLE_HEADLESS
: yaitu export ENABLE_CONTRIB=1
jika Anda ingin membuat opencv-contrib-python
pip wheel . --verbose
. CATATAN: pastikan Anda memiliki versi pip
terbaru, perintah pip wheel
menggantikan perintah python setup.py bdist_wheel
lama yang tidak mendukung pyproject.toml
.setup.py
akan ditempatkan di folder dist
. Paket sudah siap dan Anda dapat melakukan apa pun yang Anda inginkan.manylinux
sebagai host build jika diperlukan portabilitas maksimum dan jalankan auditwheel
untuk wheel setelah builddelocate
(sama seperti auditwheel
tetapi untuk macOS) untuk portabilitas yang lebih baik Untuk membangun opencv-python
dalam build debug yang tidak dioptimalkan, Anda perlu sedikit mengesampingkan proses normal.
scikit-build
dan numpy
melalui pip.python setup.py bdist_wheel --build-type=Debug
.dist/
dengan pip install dist/wheelname.whl
.Jika Anda ingin build menghasilkan semua perintah compiler, maka kombinasi flag dan variabel lingkungan berikut telah diuji agar berfungsi di Linux:
export CMAKE_ARGS='-DCMAKE_VERBOSE_MAKEFILE=ON'
export VERBOSE=1
python3 setup.py bdist_wheel --build-type=Debug
Lihat terbitan ini untuk diskusi lebih lanjut: #424
Sejak OpenCV versi 4.3.0, distribusi sumber juga disediakan di PyPI. Artinya, jika sistem Anda tidak kompatibel dengan salah satu roda di PyPI, pip
akan mencoba membuat OpenCV dari sumber. Jika Anda memerlukan versi OpenCV yang tidak tersedia di PyPI sebagai distribusi sumber, silakan ikuti panduan pembuatan manual di atas, bukan yang ini.
Anda juga dapat memaksa pip
untuk membuat roda dari distribusi sumber. Beberapa contoh:
pip install --no-binary opencv-python opencv-python
pip install --no-binary :all: opencv-python
Jika Anda memerlukan modul contrib atau versi headless, cukup ubah nama paketnya (langkah 4 di bagian sebelumnya tidak diperlukan). Namun, tanda CMake tambahan apa pun dapat diberikan melalui variabel lingkungan seperti yang dijelaskan pada langkah 3 di bagian pembuatan manual. Jika tidak ada yang disediakan, skrip CMake OpenCV akan mencoba menemukan dan mengaktifkan dependensi yang sesuai. Distribusi tanpa kepala memiliki tanda CMake berkode keras yang menonaktifkan semua kemungkinan ketergantungan GUI.
Pada sistem yang lambat seperti Raspberry Pi, pembangunan penuh mungkin memerlukan waktu beberapa jam. Pada 8-core Ryzen 7 3700X, pembuatannya memakan waktu sekitar 6 menit.
Paket Opencv-python (skrip dalam repositori ini) tersedia di bawah lisensi MIT.
OpenCV sendiri tersedia di bawah lisensi Apache 2.
Lisensi paket pihak ketiga ada di LICENSE-3RD-PARTY.txt.
Semua roda dikirimkan dengan FFmpeg berlisensi di bawah LGPLv2.1.
Roda Linux tanpa kepala dikirimkan dengan Qt 5 yang dilisensikan di bawah LGPLv3.
Paket-paket tersebut juga mencakup biner lainnya. Daftar lengkap lisensi dapat ditemukan dari LICENSE-3RD-PARTY.txt.
skrip find_version.py
mencari informasi versi dari sumber OpenCV dan menambahkan juga nomor revisi khusus untuk repositori ini ke string versi. Ini menyimpan informasi versi ke file version.py
di bawah cv2
selain beberapa tanda lainnya.
Rilis dibuat dan diunggah ke PyPI ketika tag baru dimasukkan ke cabang master. Tag ini membedakan paket (repo ini mungkin mengalami modifikasi tetapi versi OpenCV tetap sama) dan harus bertambah secara berurutan. Dalam praktiknya, nomor versi rilis terlihat seperti ini:
cv_major.cv_minor.cv_revision.package_revision
misalnya 3.1.0.0
Cabang master mengikuti rilis cabang master OpenCV. Cabang 3.4 mengikuti rilis perbaikan bug OpenCV 3.4.
Setiap komitmen pada cabang master repo ini akan dibangun. Artefak build yang mungkin menggunakan pengidentifikasi versi lokal:
cv_major.cv_minor.cv_revision+git_hash_of_this_repo
misalnya 3.1.0+14a8d39
Artefak ini tidak dapat dan tidak akan diunggah ke PyPI.
Roda Linux dibuat menggunakan manylinux2014. Roda ini seharusnya bisa langsung digunakan untuk sebagian besar distro (yang menggunakan pustaka standar GNU C) di luar sana karena dibuat dengan versi lama glibc.
Gambar default manylinux2014
telah diperluas dengan beberapa dependensi OpenCV. Lihat folder Docker untuk info lebih lanjut.
Roda pra-bangun yang kompatibel dengan Python 3.x disediakan untuk versi Python yang didukung secara resmi (bukan di EOL):
Mulai dari versi 4.2.0 dan 3.4.9, lingkungan build macOS Travis telah diperbarui ke XCode 9.4. Perubahan tersebut secara efektif menghilangkan dukungan untuk versi MacOS yang lebih lama dari 10.13.
Mulai dari versi 4.3.0 dan 3.4.10, lingkungan build Linux telah diperbarui dari manylinux1
ke manylinux2014
. Hal ini menghilangkan dukungan untuk distribusi Linux lama.
Mulai dari versi 4.7.0, lingkungan build Mac OS GitHub Actions diperbarui ke versi 11. Dukungan Mac OS 10.x tidak lagi digunakan. Lihat aksi/runner-images#5583
Mulai dari versi 4.9.0, lingkungan build Mac OS GitHub Actions diperbarui ke versi 12. Dukungan Mac OS 10.x tidak lagi digunakan oleh Brew dan sebagian besar paket yang digunakan.