opencv(c++) 이미지 불러와서 띄우기

  • 최초 작성일: 2022년 1월 10일(월)

목차

[TOC]

imread() : 이미지 읽고 불러오기

imread(“fileName”, flag) : 파일이름은 말 그대로, 불러오고자 하는 이미지의 경로를 입력해주고, flag는 어떻게 불러올 것인지 옵션을 정하는 것이다.

나는 “lion.png” 라는 이미지 파일을 사용했고, 프로젝트 파일과 동일한 경로에 있기 때문에 그대로 적어줬다. 이때, 다른 경로에 이미지가 있다면 그 이미지의 직접적인 경로를 적어줘야한다.(이전 게시글에 이미 설명함)

flag는 대표적으로 3가지가 있다. IMREAD_COLOR (or 1) : 이미지 파일을 컬러로 출력한다. 기본값이 1이라 생략해도 무관하다. IMREAD_GRAYSCALE (or 0) : 이미지 파일을 흑백으로 출력한다. 0으로 하면 흑백으로도 된다는데, 내가 했을땐 오류가 떴고 이유를 모르겠다. IMREAD_UNCHANGED (or -1) : 이미지 파일을 컬러에서 알파 채널까지 포함해서 불러올 수 있다.

이때, 알파값이 뭐야? 라고 할 수 있으니 설명을 하자면, 색을 표현하고자 할 때에는 흔히 RGB (Red & Green & Blue) 형태로 표현한다. 즉, 빨강, 초록, 파랑의 각각의 수치를 통해 색상을 표현한다. 하지만 여기서 알파를 추가하여 RGBA 형태로 출력하는 경우이다. 추가로 A(Alpha) 값을 통해 투명도를 결정한다. 일반적으로 0.0-1.0 또는 0-255 값으로 구분된다. 0: 완전 투명, 1.0(또는 255 등 제일 높은 값): 완전 불투명


imshow() : 이미지 보여주기

imshow(“windowName”, image) windowName : 이미지를 보여줄 창의 이름을 설정 image: 내가 설정한 형식의 image 변수의 이름 (Mat img = imread("--") 에서 img를 의미한다.) ---

#include <opencv2/imgcodecs.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>

#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;


int main(int ac, char** av) {

  // 아래의 코드를 각각 하나씩 모두 실행해보며 비교해보자!
  
	Mat img = imread("lion.png", IMREAD_COLOR);
  //Mat img = imread("lion.png", IMREAD_GRAYSCLAE);
  //Mat img = imread("lion.png", IMREAD_UNCHANGED);
  
	//Mat img = imread("lion.png", 1);
  //Mat img = imread("lion.png", 0);
  //Mat img = imread("lion.png", -1);

	imshow("img", img);
	waitKey(0);		

	return 0;
}