2012-05-02 2 views

답변

116

공식적으로 OpenCV는 cvcv2의 두 가지 유형의 Python 인터페이스를 출시합니다.

CV :

나는 cv 작업을 시작했다. 이 모든 OpenCV 데이터 형식은 그대로 보존됩니다. 예를 들어로드 된 이미지의 형식은 cvMat이며 C++에서와 동일합니다.

배열 작업의 경우 cvSet2D, cvGet2D 등과 같은 몇 가지 기능이 있습니다. 일부 토론에서는 속도가 느립니다.

imageROI의 경우 cvSetImageROI과 같은 특수 기능이 필요합니다.

윤곽선을 발견하면 cvSeq 구조체가 반환되며 이는 Python 목록 또는 NumPy 배열과 비교하여 작동하지 않습니다.

(그리고 최신 릴리스에서 만 cv2 모듈이 있습니다, 지금. 나중에, OpenCV의이 cvcv2 모두와 함께. 이전 만 cv 있었다. 곧 개발이 중지됩니다, 생각하고, cv .. cv2 내부의 서브 클래스) 당신은 그것을 액세스 할 수 import cv2.cv as cv를 호출 할 필요가있다

CV2 :

그리고 최신 하나 cv2입니다. 이 모든 것은 lists, tuples, dictionary 등과 같이 ndarraynative Python과 같은 객체 인 NumPy 개체로 반환됩니다. 따라서이 NumPy 지원으로 인해 여기에서 아무런 작업도 수행 할 수 없습니다. NumPy은 매우 안정적이고 빠른 배열 처리 라이브러리입니다.

예를 들어, 이미지를로드하면 ndarray이 반환됩니다.

array[i,j]은 (i, j) 위치의 픽셀 값을 제공합니다.

또한 imageROI의 경우 배열 자르기는 ROI=array[c1:c2,r1:r2]과 같이 사용할 수 있습니다. 별도의 기능이 필요 없습니다.

두 이미지를 추가하려면 아무 기능도 호출 할 필요가 없습니다. 단지 res = img1+img2입니다. (그러나 NumPy 추가는 이미지와 같은 uint8 배열의 모듈러스 연산입니다. 자세한 내용은 Difference between Matrix Arithmetic in OpenCV and Numpy 문서를 참조하십시오.

반환되는 윤곽선은 Numpy 배열의 목록입니다. Contours에 대한 자세한 내용은 Contours - 1 : Getting Started입니다.

요약하면 cv2를 사용하면 모든 것이 단순하고 빠릅니다.

cv2 속도를 NumPy와 방법에 대한 간단한 논의는 스택 오버플로 질문 Performance comparison of OpenCV-Python interfaces, cv and cv2입니다.

pyopencv : 나는 그것을 사용하지 않은 이후

나는 이것에 대해 잘 모른다. 그러나 그것은 더 발전을 멈추는 것처럼 보인다.

공식 라이브러리에 충실하는 것이 더 좋을 것이라고 생각합니다.

요약하면 cv2를 사용하는 것이 좋습니다.

편집 : 당신은 Install OpenCV in Windows for Pythoncv2 모듈 설치 절차를 볼 수 있습니다.

+0

cv2에 대한 링크가 있습니까? – Framester

+0

cv2 소스에서 OpenCV를 빌드하는 경우 Python 인터페이스가 컴파일되고 설치됩니다. Linux 또는 다른 OS 용 바이너리 패키지를 사용하는 경우 OS/배포 설명서를 참조하십시오. 도움을 받으려면 http://goo.gl/MUjXi를 참조하십시오. –

+1

@Framester :이 링크의 cv2 설치 절차를 참조하십시오. http://opencvpython.blogspot.in/2012/05/install-opencv-in-windows-for-python.html –

관련 문제