반응형
윈도우에서 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 사용을 위해 환경 변수를 시스템에 등록합니다.
- 시스템 환경변수의 Path 환경변수에 %OPENCV_BIN_DIR% 를 추가
- OPENCV_INCLUDE_DIR 환경변수 생성, C:\tools\opencv\build\include 설정
- OPENCV_LIB_DIR 환경변수 생성, C:\tools\opencv\build\x64\vc15\lib 설정
- 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);
참고자료
반응형
'프로그래밍 > OpenCV' 카테고리의 다른 글
OpenCV 카메라 FPS 구하는 예제 코드 (0) | 2022.11.04 |
---|---|
[OPENCV] 카메라 이미지 왜곡보정 (0) | 2022.06.18 |
[OPENCV] 카메라 캘리브레이션 (0) | 2022.06.16 |
[OPENCV] SGBM vs StereoBM 깊이맵 결과 비교 (1) | 2022.06.15 |
[OPENCV] 스테레오 깊이맵 성능 높이기 (0) | 2022.06.15 |
[OPENCV] GSTREAMER 를 이용한 이미지 캡처 (0) | 2022.06.13 |
[OPENCV] 스테레오 카메라 StereoBM 예제 첫번째 (0) | 2022.06.12 |
[OPENCV] Ubuntu 18.04 OpenCV 4.2.0 설치하기 (0) | 2022.06.10 |