본문 바로가기
프로그래밍/OpenCV

opencv4nodejs 을 이용한 개발환경 구축

by makepluscode 2022. 11. 3.
반응형

윈도우에서 opencv4nodejs 을 이용한 개발환경 구축하기

opencv4nodejs

윈도우 환경에서 USB카메라와 웹서비스와 연동하는 과정에서 어떤 라이브러리를 쓸까 고민해보았습니다. 리눅스라면, V4L2 를 사용하겠지만, 윈도우 환경에서는 USB카메라를 위해 OpenCV 를 사용해보려고 합니다. 또한 웹서비스 연동을 위해서 NodeJS 바인딩이 필요하여, opencv4nodejs 패키지를 찾게 되었습니다.

opencv4nodejs 설치하고 실행해보기

테스트환경

  • Windows 10, Microsoft Windows [Version 10.0.22000.1098]
  • nodejs (v16.18.0), npm (8.19.2) 설치된 상태

Windows 명령줄 패키지 매니저 chocolatey 설치

Windows 도 리눅스나 MacOS 처럼, 명령줄(Command Line Interface)에서 패키지 설치를 지원합니다. Windows 에서 터미널을 관리자권한으로 실행하고, 명령줄 패키지 매니저 chocolatey 를 설치합니다.

>  Set-ExecutionPolicy Bypass -Scope Process
>  Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

chocolatey 설치 완료후에,  choco 명령어를 이용하여 windows native build 도구를 설치합니다.

> choco install -y python visualcpp-build-tools

Node.js 네이티브 모듈을 컴파일 하기 위한 필요한 도구를 설치합니다.

> npm install node-gyp

OpenCV 설치

choco  를 사용하여 OpenCV 를 설치합니다.

> choco install OpenCV -y -version 4.1.0

OpenCV 설치가 정상적으로 완료되면, C:\tools\opencv\ 에 OpenCV v4.1.0 이 설치됩니다. OpenCV 사용을 위해 환경 변수를 시스템에 등록합니다.

  1. 시스템 환경변수의 Path 환경변수에 %OPENCV_BIN_DIR% 를 추가
  2. OPENCV_INCLUDE_DIR  환경변수 생성, C:\tools\opencv\build\include 설정
  3. OPENCV_LIB_DIR 환경변수 생성,  C:\tools\opencv\build\x64\vc15\lib 설정
  4. OPENCV_BIN_DIR 환경변수 생성,  C:\tools\opencv\build\bin 설정

opencv4nodejs 패키지 설치

다음 명령어로 opencv4nodejs 를 설치합니다.

> set OPENCV4NODEJS_DISABLE_AUTOBUILD=1
> npm install --save opencv4nodejs

package.json 를 열고,

{
  "dependencies": {
    "node-gyp": "^9.3.0",
    "opencv4nodejs": "^5.6.0"
  },
  "opencv4nodejs": {
    "disableAutoBuild": 1,
    "opencvIncludeDir": "C:\\tools\\opencv\\build\\include",
    "opencvLibDir": "C:\\tools\\opencv\\build\\x64\\vc15\\lib",
    "opencvBinDir": "C:\\tools\\opencv\\build\\x64\\vc15\\bin"
  }
}

와 같이 수정하고, 아래와 같은 간단한 예제를 실행해봅니다. (USB 카메라 연결된 상태)

const cv = require('opencv4nodejs');

// Read a frame from camera
const cap = new cv.VideoCapture(0);
const frame = cap.read();

if (frame.empty) {
  exit(0);
}

// cv.imwrite("./capture.png", frame);

// Show the frame on screen
cv.imshow("capture", frame);
cv.waitKey(0);

참고자료

https://github.com/justadudewhohacks/opencv4nodejs

 

GitHub - justadudewhohacks/opencv4nodejs: Nodejs bindings to OpenCV 3 and OpenCV 4

Nodejs bindings to OpenCV 3 and OpenCV 4. Contribute to justadudewhohacks/opencv4nodejs development by creating an account on GitHub.

github.com

반응형