Існує
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. Ви можете знайти докладну дискусію про Контури в Контури - 1: Початок роботи .
Коротше кажучи, з cv2 все спрощено і досить швидко.
Просте обговорення того, як прискорюється NumPy cv2
, у запитанні щодо переповнення стека Порівняння продуктивності інтерфейсів OpenCV-Python, cv та cv2 .
pyopencv :
Я не знаю багато про це, оскільки я ним не користувався. Але це, здається, зупинило подальший розвиток.
Я думаю, було б краще дотримуватися офіційних бібліотек.
Коротше, я б порадив вам використовувати cv2!
РЕДАГУВАТИ: Ви можете побачити процедуру встановлення cv2
модуля в розділі Встановити OpenCV у Windows для Python .