Есть
opencv(библиотека от ребят из OpenCV),cv(старая библиотека от ребят из OpenCV) иpyopencvсо своим предшественникомctypes-opencv.
Каковы основные отличия и какой из них я должен использовать?
Ответы:
Официально OpenCV выпускает два типа интерфейсов Python: cvи cv2.
резюме:
Я начал работать cv. При этом все типы данных OpenCV сохраняются как таковые. Например, при загрузке изображения имеют формат cvMat, такой же, как в C ++.
Для операций с массивами есть несколько функций, например cvSet2D, cvGet2Dи т. Д. И некоторые дискуссии говорят, что они медленнее.
Для imageROI вам понадобятся специальные функции, такие как cvSetImageROI.
Если вы найдете контуры, cvSeqвозвращаются структуры, с которыми не так хорошо работать по сравнению со списками Python или массивами NumPy.
(И я думаю, скоро его разработка будет остановлена. Раньше было только cv. Позже OpenCV пришла с обоими cvи cv2. Теперь там, в последних выпусках, есть только cv2модуль, а cvвнутри - подкласс cv2. Вам нужно вызвать import cv2.cv as cvчтобы получить к нему доступ.)
cv2:
И самый последний cv2. В этом, все возвращаются как NumPyобъекты , как ndarray и native Pythonобъекты , такие как lists, tuples, dictionaryи т.д. Таким образом , благодаря этой поддержке NumPy, вы можете сделать любую операцию Numpy здесь. NumPyэто очень стабильная и быстрая библиотека обработки массивов.
Например, если вы загружаете изображение, ndarrayвозвращается.
array[i,j] дает вам значение пикселя в позиции (i, j).
Также для imageROI можно использовать нарезку массива как ROI=array[c1:c2,r1:r2]. Нет необходимости в отдельных функциях.
Чтобы добавить два изображения, нет необходимости вызывать какую-либо функцию, просто выполните res = img1+img2. (Но добавление NumPy - это операция по модулю для массивов uint8, таких как изображения. См. Статью Разница между матричной арифметикой в OpenCV и Numpy, чтобы узнать больше.
Возвращаемые контуры - это списки массивов Numpy. Вы можете найти подробное обсуждение Contours in Contours - 1: Getting Started .
Короче говоря, с cv2 все упрощается и довольно быстро.
Простое обсуждение того, как ускоряется NumPy, cv2находится в вопросе о переполнении стека Сравнение производительности интерфейсов OpenCV-Python, cv и cv2 .
pyopencv :
Я мало что знаю об этом, так как не использовал. Но вроде бы остановил дальнейшее развитие.
Думаю, лучше было бы придерживаться официальных библиотек.
Короче, рекомендую использовать cv2!
РЕДАКТИРОВАТЬ: вы можете увидеть процедуру установки cv2модуля в разделе « Установка OpenCV в Windows для Python» .