Чем между собой отличаются все эти интерфейсы в формате 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.