cyphen156
컴퓨터 비전#2 OpenCV 4 실습 환경 구축 본문
사실 OpenCV는 파이썬이나 C#으로 하는게 더 편하다.
하지만 나는 C++개발자를 지향하기 때문에 이미 해본 파이썬 말고 C++로 다시 실습을 진행하겠다.
책에서는 이것저것 OpenCV의 역사와 개요에 대해 설명하고 있는데 그냥 나는 라이브러리 사용법을 익히는것에 중점을 둘 것이다.
주로 사용되는 모듈들이 몇가지 존재하는데 다음과 같다
- calib3D : 카메라를 통해 이미지 3D 심도 측정시 필요
- core : 행렬, 벡터 등 핵심 클래스와 연산 함수를 포함
- dnn : 심층 신경망 라이브러리
- features2d : 2차원 특징 추출 및 특징 벡터 기술, 이미지 매칭 방법
- flann : 다차원 공간에서의 최인접 객체 검색
- highgui : 영상 화면 출력과 마우스 이벤트 처리 등 사용자 인터페이스
- imgcodecs : 영상 파일 입출력
- imgproc : 필터링, 기하학적 변환, 색 공간 변환 등 영상 후 처리 기능
- ml : 머신 러닝 알고리즘
- objdetect : 객체검출 알고리즘
- photo : HDR, 잡음 제거 등 이미지 처리 기능
- stitching : 영상 이어 붙이기
- vedio : 옵티컬 플로우, 배경 분리 등 동영상 처리 기술
- vedioio : 동영상파일 입 출력
- world : 여러 CV파일 모듈들을 포함하는 통합 모듈
간단히 사용한다면 world 모듈 하나로 사용가능 하지만 프로그램 효율성을 위해 여러가지 DLL와 Lib파일로 분할하여 놓았기 때문에 필요한 기능만 포함하여 코딩하는것이 가능하다.
한가지 주의해야 할 점은 이미지 입출력과 영상 입출력 라이브러리의 필요 모듈이름이 같은 원칙을 따르지 않는다는 것이다. 이미지 파일 입출력은 img + codecs, 영상 입출력은 vedio + input/output으로 단어 조합이 되어있다. 아마 모듈 이름이 이미지 코덱인 이유가 이미지를 인코딩/디코딩 하기 위한 파일 입출력시 데이터 전, 후처리가 주로 이루어 지기 때문이 아닌가 싶다.
또한 요즘 인공지능 신경망이 요즘 트렌드인 CNN/RNN 내지 LLM이 아닌 DNN인 이유는 영상 처리알고리즘이 사용되는 주 분야가 공장자동화 또는 자율 주행쪽에 있기 때문에 이미지 분석시 발생하는 잡음을 최대한 줄여야 하기 때문이고, 회귀 분석의 경우 오류 검출을 위해 긴 시간 학습하지만 영상 처리의 경우 들어오는 데이터를 즉시 처리해야 하기 때문이 아닐까 싶다.
OpenCV프로젝트 생성하기
저는 Windows 11 64bit / VisualStudio 2022를 기준으로 진행하였습니다.
1. 다음 링크를 클릭하여 공식 사이트 릴리즈 다운로드 사이트로 접속하여 플랫폼별 다운로드를 진행한다.
다운로드 받고나면 다음과 같은 이름의 파일을 실행시킬 수 있다.
opencv-4.10.0-windows
실행하고 나면 압축 해제 위치가 있는데 이 위치를 나중에 사용해야 하니 잘 기억하던지 C드라이브 하위 폴더로 생성하자.
C: 로 경로가 설정되어 있으면 된다.
그리고 나서 다음과 같이 시스템 환경 변수를 등록한다
이제 Visual Studio 내에서 C++ OpenCV용 빈 프로젝트를 생성하고, 라이브러리 폴더를 연결한다.
하나 주의할 점은 저 폴더버튼 아무리 눌러봐야 탐색창 안뜬다 아래 빈공간을 클릭하고 직접 타자를 치던지 오른쪽끝에 생기는 ...버튼으로 폴더를 찾아서 넣어야 한다.
그리고 나서 링커를 연결하면 프로젝트 기본 세팅은 끝이 난다.
우리는 openCV4, 그리고.10버전을 사용하기 때문에 4100d.lib 파일을 연결한것이다. 다른 버전이라면 저 숫자가 해당버전에 맞도록 조정되어야 한다.
그리고 나서 테스트 코드 HelloCV.cpp를 작성하여 디버깅을 수행해 보면 된다.
프로젝트 폴더 내에 리소스를 저장할 폴더 하나 만들고 임시 이미지 파일을 하나 넣어놓자.
간단하게 이미지 파일 불러올 수 있게 라이브러리 가져왔고, 키입력 을기다리는 프로그램이다.
#include <iostream>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
cout << "Hello CV2" << endl;
string path = "Resources/test.png";
Mat img = imread(path);
imshow("img", img);
waitKey(0);
}
이래저래 필요없는 에러로그가 많이 뜨는데 일단은 무시하자.
공부하는데 사용된 책은 다음과 같습니다.
책정보, OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 : 길벗, 이지톡 (gilbut.co.kr)
모든 예제 파일은 다음 주소에 있습니다.
GitHub - sunkyoo/opencv4cvml: "OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝" (길벗, 2019) 책 소스 코드입니다.
또는 제 깃허브에 올려둡니다.
Workspace/C++/openCV at main · cyphen156/Workspace (github.com)
'컴퓨터공학 > 컴퓨터 비전' 카테고리의 다른 글
컴퓨터 비전#3 OpenCV 4 기본 사용법 (1) | 2024.09.06 |
---|---|
컴퓨터 비전#1 컴퓨터 비전 개요, 픽셀과 컬러 (2) | 2024.08.30 |