Існує
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 .