있습니다
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의 Matrix Arithmetic과 Numpy의 차이점 기사를 참조하십시오 .
반환 된 윤곽선은 Numpy 배열 목록입니다. Contours-1 : Getting Started 에서 Contours 에 대한 자세한 설명을 찾을 수 있습니다 .
요컨대, cv2를 사용하면 모든 것이 간단하고 매우 빠릅니다.
NumPy 속도 향상에 대한 간단한 토론 cv2
은 Stack Overflow 질문 OpenCV-Python 인터페이스, cv 및 cv2의 성능 비교에 있습니다.
pyopencv :
나는 그것을 사용하지 않았기 때문에 이것에 대해 많이 알지 못합니다. 그러나 그것은 더 이상의 개발을 중단 한 것 같습니다.
나는 공식 도서관을 고수하는 것이 더 나을 것이라고 생각합니다.
요컨대 cv2를 사용하는 것이 좋습니다!
편집 : Python 용 Windows에 OpenCV 설치 에서 cv2
모듈의 설치 절차를 볼 수 있습니다 .