복붙노트

[PYTHON] 이 OpenCV Python 인터페이스들 사이에 다른 점은 무엇입니까?

PYTHON

이 OpenCV Python 인터페이스들 사이에 다른 점은 무엇입니까?

있다

주요 차이점은 무엇이며 어떤 것을 사용해야합니까?

해결법

  1. ==============================

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

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

    CV :

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

    배열 연산의 경우 cvSet2D, cvGet2D 등과 같은 여러 함수가 있습니다. 일부 토론에서는 속도가 느립니다.

    imageROI에는 cvSetImageROI와 같은 특수 함수가 필요합니다.

    등고선을 찾으면 cvSeq 구조체가 반환됩니다.이 구조체는 파이썬리스트 나 NumPy 배열과 비교해서 잘 작동하지 않습니다.

    (그리고 나는 곧 개발이 중단 될 것이라고 생각한다. 이전에는 cv 만 있었고 나중에 OpenCV에는 cv와 cv2가 함께 제공되었다. 이제 최신 릴리스에는 cv2 모듈 만 있고 cv는 내부의 서브 클래스이다. cv2로 가져 오기 cv2.cv를 호출하여 cv로 액세스해야합니다.)

    CV2 :

    그리고 최근의 것은 cv2입니다. 여기서 모든 것은 ndarray와 같은 NumPy 객체와 목록, 튜플, 사전 등과 같은 원시 Python 객체로 반환됩니다. 따라서이 NumPy 지원으로 인해 여기에서 아무런 작업도 수행 할 수 없습니다. NumPy는 매우 안정적이고 빠른 배열 처리 라이브러리입니다.

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

    array [i, j]는 (i, j) 위치의 픽셀 값을줍니다.

    또한 imageROI의 경우 ROI = array [c1 : c2, r1 : r2]와 같은 배열 슬라이스를 사용할 수 있습니다. 별도의 기능이 필요 없습니다.

    두 개의 이미지를 추가하려면 함수를 호출 할 필요가 없습니다. res = img1 + img2를 호출하면됩니다. (하지만 NumPy 추가는 이미지와 같은 uint8 배열의 모듈러스 연산입니다. 자세한 내용은 OpenCV의 행렬 연산과 Numpy의 차이점 문서를 참조하십시오.

    반환되는 윤곽선은 Numpy 배열 목록입니다. Contours - 1 : 시작하기의 Contours에 대한 자세한 내용을 확인할 수 있습니다.

    간단히 말해서, cv2는 모든 것이 단순하고 매우 빠릅니다.

    NumPy가 cv2 속도를 높이는 방법에 대한 간단한 토론 Stack Overflow question OpenCV-Python 인터페이스, cv 및 cv2의 성능 비교.

    pyopencv :

    나는 그것을 사용하지 않았기 때문에 이것에 대해 많이 알지 못합니다. 그러나 그것은 더 발전을 멈추는 것처럼 보인다.

    나는 공식 도서관에 충실하는 것이 더 낫다고 생각한다.

    간단히 말해, 나는 cv2를 사용하는 것이 좋습니다!

    편집 : Windows 용 Python 용 OpenCV 설치에서 cv2 모듈의 설치 절차를 볼 수 있습니다.

  2. from https://stackoverflow.com/questions/10417108/what-is-different-between-all-these-opencv-python-interfaces by cc-by-sa and MIT license