Hướng dẫn what version of python works with opencv? - phiên bản nào của python hoạt động với opencv?

Hướng dẫn what version of python works with opencv? - phiên bản nào của python hoạt động với opencv?

OpenCV trên bánh xe

Các gói OpenCV chỉ được xây dựng trước CPU cho Python.

Kiểm tra phần xây dựng thủ công nếu bạn muốn biên dịch các ràng buộc từ nguồn để cho phép các mô -đun bổ sung như CUDA.

Cài đặt và sử dụng

  1. Nếu bạn đã cài đặt trước đó/khác được cài đặt thủ công (= không được cài đặt qua pip) của OpenCV được cài đặt (ví dụ: mô-đun CV2 trong phần gốc của gói trang web của Python), hãy xóa nó trước khi cài đặt để tránh xung đột.

  2. Đảm bảo rằng phiên bản pip của bạn được cập nhật (19.3 là phiên bản được hỗ trợ tối thiểu): pip install --upgrade pip. Kiểm tra phiên bản với pip -V. Ví dụ, các bản phân phối Linux thường giao hàng với các phiên bản pip rất cũ gây ra nhiều vấn đề bất ngờ, đặc biệt là với định dạng manylinux.

  3. Chọn đúng gói cho môi trường của bạn:

    Có bốn gói khác nhau (xem Tùy chọn 1, 2, 3 và 4 bên dưới) và bạn chỉ nên chọn một trong số chúng. Không cài đặt nhiều gói khác nhau trong cùng một môi trường. Không có kiến ​​trúc plugin: Tất cả các gói đều sử dụng cùng một không gian tên (cv2). Nếu bạn đã cài đặt nhiều gói khác nhau trong cùng một môi trường, hãy gỡ cài đặt tất cả chúng bằng pip uninstall và cài đặt lại chỉ một gói.SELECT ONLY ONE OF THEM. Do not install multiple different packages in the same environment. There is no plugin architecture: all the packages use the same namespace (cv2). If you installed multiple different packages in the same environment, uninstall them all with pip uninstall and reinstall only one package.

    một. Các gói cho môi trường máy tính để bàn tiêu chuẩn (Windows, MacOS, hầu hết mọi phân phối GNU/Linux) Packages for standard desktop environments (Windows, macOS, almost any GNU/Linux distribution)

    • Tùy chọn 1 - Gói mô -đun chính: pip install opencv-python
    • Tùy chọn 2 - Gói đầy đủ (chứa cả mô -đun chính và các mô -đun đóng góp/thêm): pip0 (kiểm tra danh sách các mô -đun đóng góp/thêm từ tài liệu OpenCV)

    b. Các gói cho môi trường máy chủ (không đầu) (như Docker, môi trường đám mây, v.v.), không có phụ thuộc thư viện GUI Packages for server (headless) environments (such as Docker, cloud environments etc.), no GUI library dependencies

    Các gói này nhỏ hơn hai gói khác ở trên vì chúng không chứa bất kỳ chức năng GUI nào (không được biên dịch với QT / các thành phần GUI khác). Điều này có nghĩa là các gói tránh một chuỗi phụ thuộc nặng đối với các thư viện X11 và kết quả là bạn sẽ có hình ảnh Docker nhỏ hơn. Bạn nên luôn luôn sử dụng các gói này nếu bạn không sử dụng pip1 et al. Hoặc bạn đang sử dụng một số gói khác (như PYQT) so với OpenCV để tạo GUI của bạn.

    • Tùy chọn 3 - Gói mô -đun chính không đầu: pip2
    • Tùy chọn 4 - Gói đầy đủ không đầu (chứa cả mô -đun chính và các mô -đun đóng góp/thêm): pip3 (kiểm tra danh sách các mô -đun đóng góp/thêm từ tài liệu OpenCV)
  4. Nhập gói:

    pip4

    Tất cả các gói chứa các tập tin Cascade Haar. pip5 có thể được sử dụng làm lối tắt cho thư mục dữ liệu. Ví dụ:

    pip6

  5. Đọc tài liệu OpenCV

  6. Trước khi mở một vấn đề mới, hãy đọc Câu hỏi thường gặp dưới đây và xem xét các vấn đề khác đã được mở.

Các câu hỏi thường gặp

Q: Tôi có cần cài đặt riêng OpenCV không?

Trả lời: Không, các gói là các gói nhị phân bánh xe đặc biệt và chúng đã chứa các nhị phân opencv được xây dựng tĩnh.

Q: Cài đặt PIP không thành công với pip7?

pip8 Phiên bản 4.3.0.*, pip9 bánh xe đã được thay thế bằng bánh xe pip0. Nếu PIP của bạn quá cũ, nó sẽ cố gắng sử dụng phân phối nguồn mới được giới thiệu trong 4.3.0.38 để xây dựng OpenCV theo cách thủ công vì nó không biết cách cài đặt bánh xe pip0. Tuy nhiên, bản dựng nguồn cũng sẽ thất bại vì quá cũ pip vì nó không hiểu các phụ thuộc xây dựng trong pip3. Để sử dụng các bánh xe được xây dựng trước ____20 mới (hoặc để xây dựng từ nguồn), phiên bản pip của bạn phải> = 19.3. Vui lòng nâng cấp pip với pip install --upgrade pip.

Q: Nhập thất bại trên Windows: pip8?

Trả lời: Nếu nhập không thành công trên Windows, hãy đảm bảo cài đặt bạn đã cài đặt C ++ Rederributable 2015. Nếu bạn đang sử dụng phiên bản Windows cũ hơn Windows 10 và các bản cập nhật hệ thống mới nhất không được cài đặt, thời gian chạy Universal C cũng có thể được yêu cầu.

Các phiên bản Windows N và KN không bao gồm gói tính năng phương tiện được OpenCV yêu cầu. Nếu bạn đang sử dụng Windows N hoặc KN Edition, vui lòng cài đặt Gói tính năng Windows Media.

Nếu bạn có Windows Server 2012+, các DLL phương tiện cũng có thể bị thiếu; Vui lòng cài đặt tính năng có tên là "Media Foundation" trong trình quản lý máy chủ. Coi chừng, một số bài đăng khuyên bạn nên cài đặt "Windows Server Essential Media Gói", nhưng bài đăng này đòi hỏi vai trò "Trải nghiệm Windows Server Essentials" và vai trò này sẽ ảnh hưởng sâu sắc đến cấu hình Windows Server của bạn (bằng cách thực thi tích hợp Active Directory, v.v.); Vì vậy, chỉ cần cài đặt "nền tảng truyền thông" nên là một lựa chọn an toàn hơn.

Nếu những điều trên không giúp đỡ, hãy kiểm tra xem bạn có đang sử dụng Anaconda không. Các phiên bản Anaconda cũ có lỗi gây ra lỗi, hãy xem vấn đề này để khắc phục thủ công.

Nếu bạn vẫn gặp phải lỗi sau khi bạn đã kiểm tra tất cả các giải pháp trước đó, hãy tải xuống các phụ thuộc và mở tệp pip9 (thường ở pip install --upgrade pip0) với nó để gỡ lỗi các vấn đề DLL bị thiếu.

Q: Tôi có một số lỗi nhập khác?

Trả lời: Đảm bảo rằng bạn đã xóa các cài đặt thủ công cũ của các ràng buộc OpenCV Python (CV2.SO hoặc CV2.pyd trong các gói trang web).

Q: Hàm foo () hoặc thanh phương thức () trả về kết quả sai, ném ngoại lệ hoặc trình thông dịch gặp sự cố. Tôi nên làm gì?

Trả lời: Kho lưu trữ chỉ chứa các tập lệnh xây dựng gói OpenCV-Python, nhưng không phải là OpenCV. Các ràng buộc Python cho OpenCV được phát triển trong Kho lưu trữ OpenCV chính thức và đó là nơi tốt nhất để báo cáo các vấn đề. Ngoài ra, vui lòng kiểm tra {opencv wiki] (https://github.com/opencv/opencv/wiki) và diễn đàn OpenCV chính thức trước khi nộp các lỗi mới.

Q: Tại sao các gói không bao gồm các thuật toán không miễn phí?

Trả lời: Các thuật toán không miễn phí như SURF không được bao gồm trong các gói này vì chúng được cấp bằng sáng chế / không miễn phí và do đó không thể được phân phối dưới dạng các nhị phân được xây dựng. Lưu ý rằng SIFT được bao gồm trong các bản dựng do hết hạn bằng sáng chế vì phiên bản OpenCV 4.3.0 và 3.4.10. Xem vấn đề này để biết thêm thông tin: https://github.com/skvark/opencv-python/issues/126

Hỏi: Tại sao gói và nhập là khác nhau (OpenCV-Python so với CV2)?

Trả lời: Người dùng dễ hiểu pip8 hơn cv2 và việc tìm gói với các công cụ tìm kiếm dễ dàng hơn. cv2 (Giao diện cũ trong các phiên bản OpenCV cũ được đặt tên là pip install --upgrade pip4) là tên mà các nhà phát triển OpenCV đã chọn khi họ tạo ra các trình tạo ràng buộc. Điều này được giữ dưới dạng tên nhập để phù hợp với các loại hướng dẫn khác nhau trên internet. Thay đổi tên hoặc hành vi nhập khẩu cũng sẽ gây nhầm lẫn cho người dùng có kinh nghiệm, những người đã quen với pip4.

Tài liệu cho OpenCV-Python

Mục đích của kho lưu trữ này là cung cấp phương tiện để đóng gói mỗi bản phát hành OpenCV mới cho các phiên bản và nền tảng Python được sử dụng nhiều nhất.

Quá trình xây dựng CI

Dự án được cấu trúc giống như gói Python bình thường với tệp pip install --upgrade pip6 tiêu chuẩn. Quá trình xây dựng cho một mục nhập duy nhất trong ma trận xây dựng như sau (xem ví dụ pip install --upgrade pip7 tệp):

  1. Trong Linux và MacOS Build: Nhận các phụ thuộc C tùy chọn của OpenCV mà chúng tôi biên dịch

  2. Kho lưu trữ và mô hình con

    • OpenCV được bao gồm dưới dạng mô hình con và phiên bản được cập nhật thủ công bởi người bảo trì khi phát hành OpenCV mới đã được thực hiện
    • Các mô -đun đóng góp cũng được bao gồm dưới dạng mô hình con
  3. Tìm phiên bản OpenCV từ các nguồn

  4. Xây dựng OpenCV

    • Các bài kiểm tra bị vô hiệu hóa, nếu không thì thời gian xây dựng tăng quá nhiều
    • Có 4 mục Ma trận xây dựng cho mỗi kết hợp bản dựng: có và không có các mô -đun đóng góp, có và không có GUI (không đầu)
    • Linux Builds chạy trong các thùng chứa Docker của Manylinux (Centos 5)
    • Phân phối nguồn là các mục riêng biệt trong ma trận xây dựng
  5. Sắp xếp lại kết quả xây dựng của OpenCV, thêm các tệp tùy chỉnh của chúng tôi và tạo bánh xe

  6. Bánh xe Linux và MacOS được chuyển đổi với AuditWheel và Delocate, tương ứng

  7. Cài đặt bánh xe được tạo

  8. Kiểm tra rằng Python có thể nhập thư viện và chạy một số kiểm tra tỉnh táo

  9. Sử dụng Twine để tải lên bánh xe được tạo lên PYPI (chỉ trong các bản dựng phát hành)

Bước 1--4 được xử lý bởi pip install --upgrade pip8.

Bản dựng có thể được tùy chỉnh với các biến môi trường. Ngoài bất kỳ biến nào mà bản dựng của OpenCV chấp nhận, chúng tôi nhận ra:

  • pip install --upgrade pip9. Đặt thành pip -V0 để mô phỏng hành vi xây dựng môi trường CI. Chỉ được sử dụng trong các bản dựng CI để buộc một số cờ xây dựng nhất định trong pip install --upgrade pip6. Không sử dụng điều này trừ khi bạn biết bạn đang làm gì.
  • pip -V2 và pip -V3. Đặt thành pip -V0 để xây dựng phiên bản đóng góp và/hoặc không đầu
  • pip -V5, được đặt thành pip -V0 để bật bản dựng máy khách Java. Điều này bị vô hiệu hóa theo mặc định.
  • pip -V7. Các đối số bổ sung cho việc gọi CMake của OpenCV. Bạn có thể sử dụng điều này để tạo một bản dựng tùy chỉnh.

Xem phần tiếp theo để biết thêm thông tin về các bản dựng thủ công bên ngoài môi trường CI.

Xây dựng thủ công

Nếu một số phụ thuộc không được bật trong các bánh xe được xây dựng trước, bạn cũng có thể chạy bản dựng cục bộ để tạo bánh xe tùy chỉnh.

  1. Bản sao kho lưu trữ này: pip -V8
  2. pip -V9
    • Bạn có thể sử dụng pip0 để kiểm tra một số phiên bản OpenCV khác trong các mô hình con pip1 và pip2 nếu cần
  3. Thêm cờ CMake tùy chỉnh nếu cần, ví dụ: pip3 (trong Windows, bạn cần đặt các biến môi trường khác nhau tùy thuộc vào dòng lệnh hoặc PowerShell)
  4. Chọn hương vị gói mà bạn muốn xây dựng với pip -V2 và pip -V3: tức là pip6 nếu bạn muốn xây dựng pip7
  5. Chạy pip8. Lưu ý: Đảm bảo bạn có phiên bản pip mới nhất, lệnh pip install --upgrade pip8 thay thế lệnh manylinux1 cũ không hỗ trợ pip3.
    • Điều này có thể mất bất cứ thứ gì từ 5 phút đến hơn 2 giờ tùy thuộc vào phần cứng của bạn
  6. Bạn sẽ có tệp bánh xe trong thư mục manylinux3 và bạn có thể làm với bất cứ điều gì bạn muốn
    • Tùy chọn: Trên Linux sử dụng một số hình ảnh manylinux làm máy chủ xây dựng nếu cần tính di động tối đa và chạy manylinux5 cho bánh xe sau khi xây dựng
    • Tùy chọn: Trên macOS sử dụng manylinux6 (giống như manylinux5 nhưng đối với macOS) để có tính di động tốt hơn

Bản dựng thủ công xây dựng

Để xây dựng pip8 trong bản dựng gỡ lỗi không được tối ưu hóa, bạn cần phải bước vào quy trình bình thường một chút.

  1. Cài đặt các gói manylinux9 và cv20 qua PIP.
  2. Chạy lệnh cv21.
  3. Cài đặt tệp bánh xe được tạo trong thư mục cv22 với cv23.

Nếu bạn muốn bản dựng sản xuất tất cả các lệnh trình biên dịch, thì sự kết hợp sau đây giữa các cờ và biến môi trường đã được kiểm tra để hoạt động trên Linux:

export CMAKE_ARGS='-DCMAKE_VERBOSE_MAKEFILE=ON'
export VERBOSE=1

python3 setup.py bdist_wheel --build-type=Debug

Xem vấn đề này để thảo luận thêm: https://github.com/opencv/opencv-python/issues/424

Phân phối nguồn

Vì OpenCV phiên bản 4.3.0, cũng là phân phối nguồn được cung cấp trong PYPI. Điều này có nghĩa là nếu hệ thống của bạn không tương thích với bất kỳ bánh xe nào trong PYPI, pip sẽ cố gắng xây dựng OpenCV từ các nguồn. Nếu bạn cần phiên bản OpenCV không có sẵn trong PYPI như một phân phối nguồn, vui lòng làm theo hướng dẫn xây dựng thủ công ở trên thay vì phiên bản này.

Bạn cũng có thể buộc pip xây dựng các bánh xe từ phân phối nguồn. Vài ví dụ:

  • cv26
  • cv27

Nếu bạn cần các mô -đun đóng góp hoặc phiên bản không đầu, chỉ cần thay đổi tên gói (bước 4 trong phần trước là không cần thiết). Tuy nhiên, bất kỳ cờ CMake bổ sung nào cũng có thể được cung cấp thông qua các biến môi trường như được mô tả trong bước 3 của phần xây dựng thủ công. Nếu không có gì được cung cấp, các tập lệnh CMake của OpenCV sẽ cố gắng tìm và kích hoạt bất kỳ sự phụ thuộc phù hợp nào. Phân phối không đầu có cờ CMake mã hóa cứng, vô hiệu hóa tất cả các phụ thuộc GUI có thể.

Trên các hệ thống chậm như Raspberry Pi, bản dựng đầy đủ có thể mất vài giờ. Trên Ryzen 7 3700x, bản dựng mất khoảng 6 phút.

Cấp phép

Gói OpenCV-Python (tập lệnh trong kho này) có sẵn theo giấy phép MIT.

Bản thân OpenCV có sẵn theo giấy phép Apache 2.

Giấy phép gói của bên thứ ba là tại giấy phép-3-party.txt.

Tất cả các bánh xe có FFMPEG được cấp phép theo LGPLV2.1.

Bánh xe Linux không đứng đầu với Qt 5 được cấp phép theo LGPLV3.

Các gói bao gồm cả các nhị phân khác. Danh sách đầy đủ các giấy phép có thể được tìm thấy từ giấy phép-3-party.txt.

Phiên bản

cv28 Tập lệnh tìm kiếm thông tin phiên bản từ các nguồn OpenCV và thêm một số sửa đổi cụ thể cho kho lưu trữ này vào chuỗi phiên bản. Nó lưu thông tin phiên bản vào tệp cv29 trong cv2 ngoài một số cờ khác.

Phát hành

Một bản phát hành được thực hiện và tải lên PYPI khi một thẻ mới được đẩy lên Master Branch. Các thẻ này phân biệt các gói (repo này có thể có sửa đổi nhưng phiên bản OpenCV vẫn giữ nguyên) và nên được tăng dần theo tuần tự. Trong thực tế, các số phiên bản phát hành trông như thế này:

pip uninstall1 ví dụ: pip uninstall2

Chi nhánh chính theo các bản phát hành chi nhánh Master OpenCV. 3.4 Chi nhánh theo OpenCV 3.4 Bugfix phát hành.

Xây dựng phát triển

Mọi cam kết với chi nhánh chính của repo này sẽ được xây dựng. Có thể xây dựng tạo tác sử dụng số nhận dạng phiên bản cục bộ:

pip uninstall3 ví dụ: pip uninstall4

Những cổ vật này không thể và sẽ không được tải lên PYPI.

Bánh xe nhiều

Bánh xe Linux được chế tạo bằng nhiều người khác. Những bánh xe này sẽ hoạt động ngoài hộp cho hầu hết các bản phân phối (sử dụng thư viện tiêu chuẩn GNU C) vì chúng được xây dựng dựa trên một phiên bản cũ của Glibc.

Hình ảnh pip0 mặc định đã được mở rộng với một số phụ thuộc OpenCV. Xem thư mục Docker để biết thêm thông tin.

Phiên bản Python được hỗ trợ

Python 3.x Bánh xe được chế tạo sẵn tương thích được cung cấp cho các phiên bản Python được hỗ trợ chính thức (không phải trong EOL):

  • 3.6
  • 3.7
  • 3.8
  • 3.9
  • 3.10

Khả năng tương thích ngược

Bắt đầu từ 4.2.0 và 3.4.9 Xây dựng môi trường xây dựng MacOS Travis đã được cập nhật lên Xcode 9.4. Sự thay đổi đã giảm hiệu quả hỗ trợ cho các phiên bản MacOS hơn 10,13.

Bắt đầu từ 4.3.0 và 3.4.10 Xây dựng môi trường xây dựng Linux đã được cập nhật từ pip9 đến pip0. Điều này đã bỏ hỗ trợ cho các bản phân phối Linux cũ.

Phiên bản Python nào phù hợp với OpenCV?

Cài đặt OpenCV từ các nhị phân được xây dựng sẵn Python 3.x (3.4+) hoặc Python 2.7.x từ đây.Gói Numpy (ví dụ: sử dụng lệnh Pip Install Numpy).Python 3. x (3.4+) or Python 2.7. x from here. Numpy package (for example, using pip install numpy command).

Python 3.8 có hỗ trợ opencv không?

Chào mừng OpenCV-Python cho các macOS trên M1, nó bổ sung CI cho các gói macOS bản địa M1 và hỗ trợ Python3.Các bản dựng 7, 3.8 và 3.9.supports python3. 7, 3.8, and 3.9 builds.

Python 3.10 có hỗ trợ opencv không?

2 câu trả lời.Lưu câu trả lời này.Hiển thị hoạt động trên bài viết này.Có vẻ như không có opencv-python cho Python 3.10 ...there is no opencv-python for Python 3.10...

OpenCV có hoạt động với Python không?

OpenCV hiện hỗ trợ vô số thuật toán liên quan đến tầm nhìn máy tính và học máy và đang mở rộng từng ngày.OpenCV hỗ trợ nhiều ngôn ngữ lập trình như C ++, Python, Java, v.v., và có sẵn trên các nền tảng khác nhau bao gồm Windows, Linux, OS X, Android và iOS.OpenCV supports a wide variety of programming languages such as C++, Python, Java, etc., and is available on different platforms including Windows, Linux, OS X, Android, and iOS.