6월, 2018의 게시물 표시

OpenCV-Python 바인딩은 어떻게 동작할까? (How OpenCV-Python Bindings Works?)

https://docs.opencv.org/3.2.0/da/d49/tutorial_py_bindings_basics.html의 내용을 번역 목표 내용: OpenCV-Python 바인딩은 어떻게 생성될까? (How OpenCV-Python bindings are generated?) OpenCV의 새로운 모듈을 어떻게 Python으로 확장하나? (How to extend new OpenCV modules to Python?)   How OpenCV-Python bindings are generated?   OpenCV에서는 모든 알고리즘이 C++로 구현되어 있다. 하지만 이러한 알고리즘들은 Python, Java 등의 다른 언어로 사용될 수 있다. Binding generator들이 바로 이러한 작업을 가능하게 한다. 이러한 generator들은 C++와 Python 사이의 다리 역할을 하며 사용자가 Python으로 부터 C++ 함수를 호출 할 수 있게 해준다. 어떠한 작업이 뒤에서 돌아가는지 완벽히 알기 위해서는 Python과 C에 대한 깊은 지식이 필요하다. C++ 함수를 Python으로 확장하는 간단한 예제는 Python 공식 문서에서 확인 할 수 있다[1]. OpenCV의 모든 함수들을 Wrapper 함수를 작성하여 Python으로 확장하는 것은 시간을 많이 잡아먹는 작업이다. 그래서 OpenCV는 좀 더 지능적인 방법을 사용한다. OpenCV는 modules/python/src2에 위치하고 있는 python 스크립트를 이용해 C++ 헤더로 부터 자동적으로 Wrapper 함수를 생성한다. python 스크립트가 어떠한 작업을 하는지 알아보자. 첫번째로, modules/python/CmakeFiles.txt는 CMake 스크립트로서 python으로 확장되는 모듈들을 #체크한다. CMake 스크립트는 자동적으로 확장되는 모든 모듈들을 체크하고 모듈의 헤더파일들을 잡아둔다(기억한다). 이 헤더파...