Поздний ответ. Если вам не нужно зависеть от более ранних версий и вы хотите использовать OpenCV с Python, выберите последнюю стабильную версию. Сегодня это OpenCV 2.3.1.
Основное преимущество OpenCV ≥ 2.3 для пользователей Python : новый модуль cv2
в дополнение к старому (обратно совместимому) cv
модулю. Новый модуль cv2
гораздо более питонен и не требует ручного выделения памяти для промежуточных структур данных. Старый cv
модуль больше похож на прямой перевод C ++ API.
Например, сравните новый Python cv2.findContours
(OpenCV ≥ 2.3):
findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy
Требуется только три параметра, и он может автоматически обрабатывать все выделения памяти, возвращает только конечный результат. Всего одна строка кода пользователя.
Vs. старый cv.FindContours
:
FindContours(image, storage [, mode [, method [, offset]]]) -> None
Требуется, чтобы пользователь явно выделил «хранилище» перед вызовом (+ 1 или 2 строки кода). Он не возвращает результат, вместо этого он сохраняет его в выделенном хранилище (он работает как связанный список, и пользователь должен написать какой-то цикл, чтобы фактически извлечь данные из хранилища). В целом, более низкоуровневый и больше похож на C ++, чем на Python. Как минимум 4-5 строк кода в общем случае использования вместо одной строки с новым модулем cv2
.