Чем между собой отличаются все эти интерфейсы в формате OpenCV в Python?
здесь
-
opencv
(библиотека от ребят из OpenCV), -
cv
(старая библиотека от парней OpenCV) и -
pyopencv
со своим предшественникомctypes-opencv
.
каковы основные различия и какой из них я должен использовать?
1 ответ:
официально OpenCV выпускает два типа интерфейсов Python,
cv
иcv2
.cv:
я начал работать на
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. Вы можете найти подробное обсуждение контуров в Контуры-1: Начало Работы.
короче говоря, с cv2 все упрощается и довольно быстро.
простая дискуссия о том, как NumPy ускорить
cv2
находится в вопросе переполнения стека сравнение производительности интерфейсов OpenCV-Python, cv и cv2.pyopencv:
я не много знаю об этом, так как я не использовал его. Но это, похоже, остановило дальнейшее развитие.
я думаю, что было бы лучше придерживаться официальных библиотек.
короче говоря, я бы рекомендовал вам использовать cv2!
EDIT: вы можете увидеть процедуру установки для
cv2
модуль установить OpenCV в Windows для Python.