Go로 OpenCV 돌리기 - GoCV

https://gocv.io/

GoCV - OpenCV4를 Golang으로 쓰기

OpenCV는 이미 C++과 Python을 잘 지원한다. C++를 통해 직접 OpenCV 네이티브 코드에 접근해 CPU와 메모리 최적화가 잘 된 성능이 좋은 영상처리 프로그램을 만들 수 있다. 아니면 Python 바인딩된 OpenCV를 사용해서 내부함수는 C++의 속도를 가져가고 외부 파이프라인 개발속도는 Python의 속도를 가져갈 수도 있다. 이렇게 이미 OpenCV를 사용해서 개발하는 방법에는 성능을 가져가는 방법과 개발속도를 가져가는 방법 둘 다 잘 되어있다.

그렇다면 Go로 OpenCV를 써야할 이유가 뭐가 있을까?

Go의 장점은 손쉬운 concurrency 프로그래밍이다. 내가 생각하기엔, Python에서 제대로 지원하지 않는 concurrency 기능을 Go에서는 손쉽게 사용할 수 있기 때문에 1. 더 좋은 성능의 (i.e. 동시성 프로그래밍) 프로그램을 2. 더 빠르게 짤 수 있다.

물론 파이썬이 Go보다 가지는 장점은 당연히 있다. 1. OpenCV-python의 코드가 더 많고, 2. Interpreter와 Jupyter notebook 등을 통해 손쉽게 중간결과를 분석할 수 있고, 3. 시각화를 하기 쉽다.

하지만 이런 분석/시각화 시나리오가 아니라 단순히 스크립트 형식으로 영상처리가 필요하다면 Go가 가질 수 있는 이점이 있을 것으로 생각한다.