Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++와 OpenCV로 이미지 불러오기 및 화면에 표시하는 방법

이 글에서는 C++에서 OpenCV 라이브러리를 사용해 이미지를 불러오고 화면에 표시하는 방법을 단계별로 살펴봅니다. OpenCV에서 이미지를 다루기 위해 반드시 이해해야 할 핵심 요소들을 하나씩 정리했습니다.

OpenCV 이미지 처리의 핵심 구성 요소

1. Mat

Mat은 함수가 아니라 데이터 구조, 즉 변수의 한 유형입니다. C++의 int, char, string 같은 자료형처럼 Mat은 OpenCV 고유의 변수형으로, 이미지를 저장할 수 있는 행렬(matrix) 데이터 구조를 생성합니다. 예제 코드의 'Mat myImage;'는 'myImage'라는 이름의 행렬 변수를 선언하는 문장입니다.

2. namedWindow()

namedWindow() 함수는 메모리를 할당하고 이미지를 표시할 창(window)을 생성합니다. 마치 사진 액자처럼 이미지가 담길 공간을 만들어 주는 역할을 합니다. 사용 형식은 'namedWindow("창 이름", 플래그)'입니다.

3. imread()

imread() 함수는 지정된 경로에서 이미지 파일을 읽어 들입니다. 사용 형식은 'imread("이미지 경로/확장자를 포함한 파일명", 플래그)'이며, 읽어 온 이미지 데이터를 Mat 변수에 저장하게 됩니다.

4. imshow()

imshow() 함수는 namedWindow()로 생성한 창에 이미지를 실제로 표시합니다. 사용 형식은 'imshow("창 이름", 행렬 변수명)'입니다.

5. waitKey()

waitKey()는 OpenCV에서 매우 중요한 함수입니다. 이미지 처리와 연산이 완료되려면 시스템에 일정 시간이 필요한데, 이 함수가 그 시간을 확보해 줍니다. 인자로 전달하는 값(밀리초)만큼 프로그램 종료를 지연시키며, 예를 들어 waitKey(10000)은 10초 후 프로그램을 종료합니다. 만약 waitKey(0)으로 작성하면 사용자가 키보드의 아무 키나 누를 때까지 무한정 대기하므로, 원하는 출력 결과를 충분히 확인할 수 있습니다.

6. destroyWindow()

destroyWindow() 함수는 열려 있는 모든 창을 닫습니다. 창을 생성할 때 할당했던 메모리를 시스템에 반환하여 리소스 누수를 방지하는 역할을 합니다.

예제 코드

다음 프로그램은 OpenCV 라이브러리를 사용해 이미지를 불러오고 화면에 표시하는 전체 과정을 보여줍니다.

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
    Mat myImage;// 'myImage'라는 이름의 행렬 변수 선언//
    namedWindow("PhotoFrame");// 이미지를 표시할 창 선언//
    myImage = imread("lakshmi.jpg");// 'lakshmi.jpg' 이미지를 행렬에 불러옴//
    if (myImage.empty()) {// 이미지가 로드되지 않았다면 에러 메시지 출력//
        cout << "Couldn't load the image." << endl;
        system("pause");// 시스템을 일시 정지하고 사용자의 키 입력 대기//
        return-1;
    }
    imshow("PhotoFrame", myImage);// 'myImage'에 저장된 이미지를 "PhotoFrame" 창에 표시//
    destroyWindow("Photoframe");// 창을 닫고 할당된 메모리 해제//
    waitKey(0);// 사용자가 아무 키나 누를 때까지 대기
    return 0;
}

실행 결과

위 프로그램을 실행하면 지정한 이미지가 "PhotoFrame"이라는 창에 나타나며, 사용자가 키보드의 아무 키나 누르면 창이 닫히고 프로그램이 종료됩니다. 만약 이미지 파일을 찾지 못하면 "Couldn't load the image."라는 오류 메시지가 출력됩니다.

C++와 OpenCV로 이미지 불러오기 및 화면에 표시하는 방법