Periksa bagian pembuatan manual jika Anda ingin mengkompilasi binding dari sumber untuk mengaktifkan modul tambahan seperti CUDA
Instalasi dan Penggunaan
Jika Anda sebelumnya/lainnya menginstal secara manual (= tidak diinstal melalui pip) versi OpenCV diinstal (e. g. cv2 di root paket situs Python), hapus sebelum instalasi untuk menghindari konflik
Pastikan versi pip_ Anda sudah yang terbaru (19. 3 adalah versi minimum yang didukung). pip install --upgrade pip. Periksa versi dengan pip -V. Misalnya distribusi Linux 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 yang berbeda (lihat opsi 1, 2, 3 dan 4 di bawah) dan Anda harus PILIH SATU DARI MEREKA HANYA. 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 semuanya dengan pip uninstall dan instal ulang hanya satu paket
a. Paket untuk lingkungan desktop standar (Windows, macOS, hampir semua distribusi GNU/Linux)
- Opsi 1 - Paket modul utama. pip install opencv-python_
- Opsi 2 - Paket lengkap (berisi modul utama dan modul contrib/ekstra). pip0 (periksa contrib/daftar modul tambahan dari dokumentasi OpenCV)
b. Paket untuk lingkungan server (tanpa kepala) (seperti Docker, lingkungan cloud, dll. ), tidak ada dependensi pustaka GUI
Paket-paket ini lebih kecil dari dua paket lain di atas karena tidak mengandung fungsionalitas GUI (tidak dikompilasi dengan Qt / komponen GUI lainnya). Ini berarti bahwa paket-paket tersebut menghindari rantai ketergantungan yang berat ke pustaka X11 dan Anda akan memiliki misalnya gambar Docker yang lebih kecil sebagai hasilnya. Anda harus selalu menggunakan paket ini jika Anda tidak menggunakan pip1 et al. atau Anda menggunakan beberapa paket lain (seperti PyQt) selain OpenCV untuk membuat GUI Anda
- Opsi 3 - Paket modul utama tanpa kepala. pip_2
- Opsi 4 - Paket lengkap tanpa kepala (berisi modul utama dan modul contrib/ekstra). pip3 (periksa contrib/daftar modul tambahan dari dokumentasi OpenCV)
Impor paket
pip_4
Semua paket berisi file cascade Haar. pip_5 dapat digunakan sebagai jalan pintas ke folder data. Sebagai contoh
pip_6
Baca dokumentasi OpenCV
Sebelum membuka terbitan baru, baca FAQ di bawah ini dan lihat terbitan lain yang sudah terbuka
Pertanyaan yang Sering Diajukan
Q. Apakah saya juga perlu menginstal OpenCV secara terpisah?
A. Tidak, paketnya adalah paket biner roda khusus dan sudah berisi biner OpenCV yang dibuat secara statis
Q. Pemasangan pip gagal dengan pip_7?
Sejak pip_8 versi 4. 3. 0. *, pip_9 roda diganti dengan pip0 roda. Jika pip Anda terlalu tua, ia akan mencoba menggunakan distribusi sumber baru yang diperkenalkan di 4. 3. 0. 38 untuk membangun OpenCV secara manual karena tidak tahu cara memasang roda pip0. Namun, build sumber juga akan gagal karena pip terlalu lama karena tidak memahami dependensi build di pip3. Untuk menggunakan pip0 roda pra-bangun baru (atau untuk membangun dari sumber), versi pip Anda harus >= 19. 3. Harap tingkatkan pip dengan pip install --upgrade pip
Q. Impor gagal di Windows. pip_8?
A. 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 edisi Windows N atau KN, harap instal juga Windows Media Feature Pack
Jika Anda memiliki Windows Server 2012+, DLL media mungkin juga hilang; . Hati-hati, beberapa posting menyarankan untuk menginstal "Windows Server Essentials Media Pack", tetapi yang ini membutuhkan peran "Windows Server Essentials Experience", dan peran ini akan sangat memengaruhi konfigurasi Windows Server Anda (dengan menerapkan integrasi direktori aktif, dll. );
Jika hal di atas tidak membantu, periksa apakah Anda menggunakan Anaconda. Versi lama Anaconda memiliki bug yang menyebabkan kesalahan, lihat masalah ini untuk perbaikan manual
Jika Anda masih mengalami kesalahan setelah Anda memeriksa semua solusi sebelumnya, unduh Ketergantungan dan buka file pip9 (biasanya terletak di pip install --upgrade pip0) untuk men-debug masalah DLL yang hilang
Q. Saya memiliki beberapa kesalahan impor lainnya?
A. Pastikan Anda telah menghapus instalasi manual lama dari binding OpenCV Python (cv2. so atau cv2. pyd dalam paket-situs)
Q. Fungsi foo() atau method bar() mengembalikan hasil yang salah, melontarkan pengecualian atau membuat juru bahasa mogok. Apa yang harus saya lakukan?
A. Repositori hanya berisi skrip pembuatan paket OpenCV-Python, tetapi bukan OpenCV itu sendiri. Pengikatan Python untuk OpenCV dikembangkan di repositori resmi OpenCV dan ini adalah tempat terbaik untuk melaporkan masalah. Silakan periksa juga {OpenCV wiki](https. //github. com/opencv/opencv/wiki) dan forum OpenCV resmi sebelum mengajukan bug baru
Q. Mengapa paket tidak menyertakan algoritme tidak bebas?
A. Algoritme tidak bebas seperti SURF tidak termasuk dalam paket ini karena dipatenkan / tidak bebas dan karenanya tidak dapat didistribusikan sebagai binari bawaan. Perhatikan bahwa SIFT disertakan dalam build karena kedaluwarsa paten sejak OpenCV versi 4. 3. 0 dan 3. 4. 10. Lihat masalah ini untuk info lebih lanjut. https. //github. com/skvark/opencv-python/issues/126
Q. Mengapa paket dan impor berbeda (opencv-python vs. cv2)?
A. Lebih mudah bagi pengguna untuk memahami pip_8 daripada cv2 dan memudahkan untuk menemukan paket dengan mesin telusur. cv2 (antarmuka lama dalam versi OpenCV lama dinamai sebagai pip install --upgrade pip4) adalah nama yang dipilih pengembang OpenCV ketika 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 pip4
Dokumentasi untuk opencv-python
Tujuan dari repositori ini adalah menyediakan sarana untuk mengemas setiap rilis OpenCV baru untuk versi dan platform Python yang paling banyak digunakan
proses pembangunan CI
Proyek ini disusun seperti paket Python normal dengan file pip install --upgrade pip6 standar. Proses build untuk satu entri dalam matriks build adalah sebagai berikut (lihat misalnya file pip install --upgrade pip7)
Di Linux dan MacOS build. dapatkan dependensi C opsional OpenCV yang kami kompilasi
Lihat repositori dan submodul
- OpenCV disertakan sebagai submodule dan versinya diperbarui secara manual oleh pengelola ketika rilis OpenCV baru telah dibuat
- Modul contrib juga disertakan sebagai submodule
Temukan versi OpenCV dari sumbernya
Membangun OpenCV
- pengujian dinonaktifkan, jika tidak, waktu pembuatan bertambah terlalu banyak
- ada 4 entri matriks build untuk setiap kombinasi build. dengan dan tanpa modul contrib, dengan dan tanpa GUI (headless)
- Linux build berjalan di banyak wadah Linux Docker (CentOS 5)
- distribusi sumber adalah entri terpisah dalam matriks build
Atur ulang hasil build OpenCV, tambahkan file kustom kami dan hasilkan roda
Roda Linux dan macOS diubah dengan auditwheel dan delocate, secara bersamaan
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 ________3______8
Build dapat disesuaikan dengan variabel lingkungan. Selain variabel apa pun yang diterima oleh build OpenCV, kami mengenalinya
- pip install --upgrade pip_9. Setel ke pip -V_0 untuk meniru perilaku pembangunan lingkungan CI. Digunakan hanya dalam build CI untuk memaksa flag build tertentu di pip install --upgrade pip6. Jangan gunakan ini kecuali Anda tahu apa yang Anda lakukan
- pip -V2 dan pip -V3. Setel ke pip -V_0 untuk membuat contrib dan/atau versi tanpa kepala
- pip -V_5, Setel ke pip -V0 untuk mengaktifkan build klien Java. Ini dinonaktifkan secara default
- pip -V_7. Argumen tambahan untuk pemanggilan CMake OpenCV. Anda dapat menggunakan ini untuk membuat bangunan khusus
Lihat bagian selanjutnya untuk info selengkapnya tentang build manual di luar lingkungan CI
Pembuatan manual
Jika beberapa dependensi tidak diaktifkan di roda yang dibuat sebelumnya, Anda juga dapat menjalankan build secara lokal untuk membuat roda kustom
- Kloning repositori ini. pip -V_8
- pip -V_9
- Anda dapat menggunakan pip_0 untuk checkout beberapa versi lain dari OpenCV di pip1 dan pip2 submodul jika diperlukan
- Tambahkan bendera Cmake khusus jika diperlukan, misalnya. pip3 (di Windows Anda perlu mengatur variabel lingkungan secara berbeda tergantung pada Command Line atau PowerShell)
- Pilih rasa paket yang ingin Anda buat dengan pip -V2 dan pip -V3. saya. e. pip_6 jika Anda ingin membangun pip7
- Jalankan pip_8. CATATAN. pastikan Anda memiliki versi pip terbaru, perintah pip install --upgrade pip8 menggantikan perintah manylinux1 lama yang tidak mendukung pip3
- ini mungkin memakan waktu mulai dari 5 menit hingga lebih dari 2 jam tergantung pada perangkat keras Anda
- Anda akan memiliki file roda di folder manylinux3 dan Anda dapat melakukannya dengan apa pun yang Anda inginkan
- Opsional. di Linux gunakan beberapa gambar manylinux_ sebagai host build jika portabilitas maksimum diperlukan dan jalankan manylinux5 untuk roda setelah build
- Opsional. pada macOS gunakan manylinux6 (sama seperti manylinux5 tetapi untuk macOS) untuk portabilitas yang lebih baik
Build debug manual
Untuk membangun pip8 dalam build debug yang tidak dioptimalkan, Anda perlu sedikit melangkahi proses normal
- Instal paket manylinux9 dan cv20 melalui pip
- Jalankan perintah cv2_1
- Instal file roda yang dihasilkan di folder cv2_2 dengan cv23
Jika Anda ingin build menghasilkan semua perintah compiler, maka kombinasi flag dan variabel lingkungan berikut telah diuji untuk bekerja di Linux
export CMAKE_ARGS='-DCMAKE_VERBOSE_MAKEFILE=ON' export VERBOSE=1 python3 setup.py bdist_wheel --build-type=DebugLihat masalah ini untuk diskusi lebih lanjut. https. //github. com/opencv/opencv-python/issues/424
Distribusi sumber
Sejak OpenCV versi 4. 3. 0, juga distribusi sumber disediakan di PyPI. Ini berarti bahwa 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, harap ikuti panduan pembuatan manual di atas alih-alih yang ini
Anda juga dapat memaksa pip_ untuk membuat roda dari distribusi sumber. Beberapa contoh
- cv26
- cv27
Jika Anda memerlukan modul contrib atau versi headless, ubah saja nama paket (langkah 4 di bagian sebelumnya tidak diperlukan). Namun, flag CMake tambahan apa pun dapat disediakan melalui variabel lingkungan seperti yang dijelaskan pada langkah 3 di bagian build manual. Jika tidak ada yang disediakan, skrip CMake OpenCV akan berusaha menemukan dan mengaktifkan dependensi yang sesuai. Distribusi tanpa kepala memiliki flag CMake berkode keras yang menonaktifkan semua kemungkinan dependensi GUI
Pada sistem yang lambat seperti Raspberry Pi, pembuatan penuh mungkin memakan waktu beberapa jam. Pada Ryzen 7 3700X 8-core, build membutuhkan waktu sekitar 6 menit
Lisensi
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
Kapal semua roda dengan FFmpeg dilisensikan di bawah LGPLv2. 1
Roda Linux tanpa kepala dikirimkan dengan Qt 5 yang dilisensikan di bawah LGPLv3
Paket termasuk juga binari lainnya. Daftar lengkap lisensi dapat ditemukan dari LICENSE-3RD-PARTY. txt
Pembuatan versi
cv28 skrip mencari informasi versi dari sumber OpenCV dan menambahkan juga nomor revisi khusus untuk repositori ini ke string versi. Ini menyimpan informasi versi ke file cv29 di bawah cv2 selain beberapa flag lainnya
Rilis
Rilis dibuat dan diunggah ke PyPI saat tag baru didorong ke cabang master. Tag ini membedakan paket (repo ini mungkin memiliki modifikasi tetapi versi OpenCV tetap sama) dan harus ditambahkan secara berurutan. Dalam praktiknya, nomor versi rilis terlihat seperti ini
pip uninstall1 e. g. pip uninstall_2
Cabang master mengikuti rilis cabang master OpenCV. 3. 4 cabang mengikuti OpenCV 3. 4 rilis perbaikan bug
Membangun pembangunan
Setiap komit ke cabang master repo ini akan dibangun. Artefak build yang mungkin menggunakan pengidentifikasi versi lokal
pip uninstall_3 e. g. pip uninstall_4
Artefak ini tidak dapat dan tidak akan diunggah ke PyPI
Banyak roda linux
Roda Linux dibangun menggunakan manylinux2014. Roda ini harus bekerja di luar kotak untuk sebagian besar distro (yang menggunakan perpustakaan standar GNU C) di luar sana karena dibangun dengan versi lama glibc
Gambar pip_0 default telah diperpanjang dengan beberapa dependensi OpenCV. Lihat folder Docker untuk info lebih lanjut
Versi Python yang didukung
Piton 3. x roda pre-built yang kompatibel disediakan untuk versi Python yang didukung secara resmi (tidak dalam EOL)
Kompatibilitas terbalik
Mulai dari 4. 2. 0 dan 3. 4. 9 membangun lingkungan build macOS Travis telah diperbarui ke XCode 9. 4. Perubahan tersebut secara efektif menghilangkan dukungan untuk yang lebih tua dari 10 tahun. 13 versi macOS
Mulai dari 4. 3. 0 dan 3. 4. 10 build Lingkungan build Linux diperbarui dari pip9 ke pip0. Ini menjatuhkan dukungan untuk distribusi Linux lama