OpenCV C++ 이미지 출력해보기

MunSeoJun·2021년 7월 13일

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()

cv::imread()의 원형은 다음과 같습니다.

Mat imread(const String& filename, int flags = IMREAD_COLOR);
  • filename : 불러올 이미지 파일 이름
  • flags : 이미지 파일 불러오기 옵션 플래그
  • 반환값 : 불러온 이미지 데이터(Mat 객체)

cv::imread() 함수는 filename 영상 파일을 불러와 Mat 객체로 변환하여 반환합니다.

filename에 "tomato.jpg"처럼 파일 이름을 지정하면 작업 폴더에 위치한 "tomato.jpg"을 불러옵니다.

flags는 이미지를 불러올 때 사용할 컬러 모드와 영상 크기를 지정합니다.

Mat::empty()

행렬의 rows 또는 cols 멤버 변수가 0이거나, 또는 data 멤버 변수가 NULL이면 true를 반환합니다.

cv::namedWindow()

cv::namedWindow()의 원형은 다음과 같습니다

void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
  • winname : 출력 창 상단에 출력되는 창 고유 이름. 이 이름으로 창을 구분함
  • flags : 생성되는 창의 속성을 지정하는 플래그

flags의 기본값은 WINDOW_AUTOSIZE이기 때문에 flags를 지정하지않아도 이미지 크기에 맞게 창의 크기를 조정합니다.

cv::imshow()

cv::imshow() 함수 원형은 다음과 같습니다.

void imshow(const String& winname, InputArray mat);
  • winname : 출력할 대상 창 이름
  • mat : 출력한 이미지 데이터(Mat 객체)

cv::imshow()의 두 번째 인자의 자료형인 InputArray 타입은 Mat, vector 등 다양한 객체를 표현할 수 있는 인터페이스 클래스입니다.
주로 OpenCV 함수 입력에 해당하는 인자의 자료형으로 사용됩니다.

cv::waitKey()

waitKey() 함수 원형은 다음과 같습니다.

int waitKey(int delay = 0);
  • delay : 키 입력을 기다릴 시간.
  • 반환값 : 눌린 키 값. 지정한 시간동안 키가 눌리지 않을 시 -1을 반환

cv::waitKey() 함수는 프로그램을 종료하는 함수입니다.
cv::waitKey() 함수는 종료 외에도 중요한 기능이 있습니다. 앞서 설명한 cv::imshow() 함수는 이미지를 화면에 나타내는 함수라고 하였지만 cv::imshow()만 호출한다고 화면에 창이 나타나지 않습니다. cv::waitKey()가 있어야만 이미지가 정상적으로 출력됩니다.

profile
여러 분야를 공부하고 싶은 학생입니다

0개의 댓글