본문 바로가기
런닝머신 (ML)

[컴퓨터 비전 & 머신러닝] Visual Studio OpenCV 설치 방법 및 주요 함수

728x90

이 글은 내가 보기 편하게 작성되었기에 남이 보기에는 불편하거나 이해하지 못할 수 있다.
 

OpenCV 설치방법

 

  1. 새프로젝트 만들기
  2. <Windows 데스트톱 마법사 프로젝트> 생성
  3. 추가옵션 <빈 프로젝트> 선택
  4. 소스 파일에 <C++ 파일> 추가
  5. <프로젝트> 카테고리에 <속성> 확인
  6. <구성>에서 <Debug> 선택
  7. C/C++ ➔ 일반 ➔ 추가 포함 디렉터리 ➔ opencv\bulid\include 파일 추가
  8. 링커 ➔ 일반➔ 추가 포함 디렉터리 ➔ opencv\build\x64\vc15\lib 파일 추가 *버전마다 숫자가 다를 수 있음
  9. 링커 ➔ 입력 ➔ 추가 종속성 ➔ opencv_world460d.lib 파일 추가 *버전마다 숫자가 다를 수 있음
  10. <Release> 도 위의 과정과 동일하게 설정
  11. 단, Release는 추가 종속성에 opencv_world460.lib 이라고 추가해야 함

영상이나 사진 쪽 전공이면 모를 수 가 없는 이 레나 사진을 띄워봤다.

 

#include <opencv2\opencv.hpp>

using namespace cv;

void main() {
	Mat Image = imread("lena.jpg", IMREAD_COLOR);
	namedWindow("display", WINDOW_AUTOSIZE);
	imshow("display", Image);
	imwrite("lena_new.jpg", Image);

	waitKey(0);
}

 지금부터 이 코드를 하나씩 뜯어볼 것이다.


 
imread() 함수 : 영상 파일을 불러올 떄 사용하는 함수

//Mat imread(const String& filename, int flags = IMREAD_COLOR)
//file name -> 불러올 영상 파일 이름
//flags -> 영상 파일 불러오기 옵션 플래그
Mat Image = imread("lena.jpg", IMREAD_COLOR);

ImreadModes 열거형 함수는 컬러, 흑백 등 다양하게 설정 할 수 있다.

IMREAD_UNCHANGED 입력 파일에 지정된 그대로의 컬러 속성을 사용
IMREAD_GRAYSCALE 1채널 그레이스케일 영상으로 변환하여 불러옴
IMREAD_COLOR 3채널 BRG 컬러 영상으로 변환하여 불러옴

imwrite() 함수 : 객체에 저장되어 있는 영상 데이터를 파일로 저장하는 함수

//bool imwrite(const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>())
//filename -> 저장할 영상 파일 이름
//img -> 저장할 영상 데이터
//params -> 저장할 영상 파일 형식에 의존적인 파라미터 쌍
imwrite("lena_new.jpg", Image);

empty() 함수 : 영상 데이터가 정상적으로 불러왔는지를 확인하는 함수

bool Mat::empty() const

namedWindow() 함수 : 영상 데이터를 띄울 창을 나타내는 함수

//void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE)
//winname -> 영상 출력 창 상단에 출력되는 창 고유 이름
//flags -> 생성되는 창의 속성을 지정하는 플래그
namedWindow("display", WINDOW_AUTOSIZE);

마찬가지로 다양한 플래그가 있다

WINDOW_NORMAL 영상 출력 창의 크기에 맞게 영상 크기가 변경되어 출력
WINDOW_AUTOSIZE 출력하는 영상 크기에 맞게 창 크기가 자동으로 변경되어 출력
WINDOW_OPENGL OpenGL을 지원한다

destroyWindow() 함수 :  namedWindow()를 통해 생성된 영상 출력 창을 닫을 수 있는 함수

void destroyWindow(const String& winname);
void destroyAllWindows(); //열려 있는 모든 창을 닫음
//winname -> 소멸시킬 창 이름

moveWindow() 함수 : 창 크기를 바꾸거나 위치를 바꿀 수 있는 함수

void moveWindow(const String& winname, int x, int y);
//winname -> 위치를 이동할 창 이름
//x -> 창이 이동할 위치의 x좌표
//y -> 창이 이동할 위치의 y좌표

resizeWindow() 함수 : 프로그램 동작 중에 영상 출력 창의 크기를 변경하는 함수

void resizeWindow(const String& winname, int width, int height);
//winname -> 크기를 변경할 창 이름
//width -> 창의 가로 크기
//height -> 창의 세로 크기

imshow() 함수 : 객체에 저장된 영상 데이터를 화면에 출력하는 함수

//void imshow(const String& winname, InputArray mat)
//winname -> 영상을 출력할 대상 창 이름
//mat -> 출력할 영상 데이터
imshow("display", Image);

waitKey() 함수 : 사용자로부터 키보드 입력을 받는 함수

//int waitKey(int delay = 0);
//delay -> 키 입력을 기다릴 시간
waitKey(0);
728x90