OpenCV C++에서 이미지를 출력하는 방법에 대해 작성해보았습니다.
개발환경은 Visual Studio 2019 이고, OpenCV 버전은 4.5.2 입니다.
<예제 코드>
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
std::cout << "OpenCV version : " << CV_VERSION << std::endl;
cv::Mat img; // 이미지 처리를 위해 Mat 클래스 선언
img = cv::imread("tomato.jpg"); // 이미지 읽기
// 이미지가 없을 경우 예외 처리
if (img.empty())
{
std::cerr << "Image load failed" << std::endl;
return -1;
}
cv::namedWindow("image"); // 이미지를 보여주기 위한 빈 창
cv::imshow("image", img); // "image"라는 이름의 창에 이미지를 넣어 보여줌
cv::waitKey(); // 종료 키 대기
return 0;
}
<실행화면>

cv::imread()의 원형은 다음과 같습니다.
Mat imread(const String& filename, int flags = IMREAD_COLOR);
cv::imread() 함수는 filename 영상 파일을 불러와 Mat 객체로 변환하여 반환합니다.
filename에 "tomato.jpg"처럼 파일 이름을 지정하면 작업 폴더에 위치한 "tomato.jpg"을 불러옵니다.
flags는 이미지를 불러올 때 사용할 컬러 모드와 영상 크기를 지정합니다.
행렬의 rows 또는 cols 멤버 변수가 0이거나, 또는 data 멤버 변수가 NULL이면 true를 반환합니다.
cv::namedWindow()의 원형은 다음과 같습니다
void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
flags의 기본값은 WINDOW_AUTOSIZE이기 때문에 flags를 지정하지않아도 이미지 크기에 맞게 창의 크기를 조정합니다.
cv::imshow() 함수 원형은 다음과 같습니다.
void imshow(const String& winname, InputArray mat);
cv::imshow()의 두 번째 인자의 자료형인 InputArray 타입은 Mat, vector 등 다양한 객체를 표현할 수 있는 인터페이스 클래스입니다.
주로 OpenCV 함수 입력에 해당하는 인자의 자료형으로 사용됩니다.
waitKey() 함수 원형은 다음과 같습니다.
int waitKey(int delay = 0);
cv::waitKey() 함수는 프로그램을 종료하는 함수입니다.
cv::waitKey() 함수는 종료 외에도 중요한 기능이 있습니다. 앞서 설명한 cv::imshow() 함수는 이미지를 화면에 나타내는 함수라고 하였지만 cv::imshow()만 호출한다고 화면에 창이 나타나지 않습니다. cv::waitKey()가 있어야만 이미지가 정상적으로 출력됩니다.