이미지 불러오고 출력하기 // OpenCV

여행하는 개발자·2024년 10월 18일
0

OpenCV

목록 보기
2/2

  충분히 공부하여 한번에 적으려 했지만 적더라고 꾸준히 올리는게 좋다 생각해 조금씩 올릴 예정이다.

  오늘은 영상편집 이전 이미지를 먼저 어떻게 출력하는지 알아보려 한다.

  기본적으로 이미지를 불러오는 선언은 Mat 변수명 = imread(이미지 명, flag); 의 형태로 선언을 한다.

  Mat은 OpenCV에서 사용하는 클래스이며 행렬을 표현하기 위한 클래스이다. imread 함수를 통해 이미지를 이 Mat 타입에 저장을 하는데 이미지 명은 말 그대로 저장할 이미지의 이름이다. 이미지가 프로젝트 폴더 안에 있다면 이미지 명만 적어도 되지만, 그렇지 않다면 이미지의 절대경로로 입력하여야 한다.
  flag 이미지를 어떻게 출력할 것인지 결정하는 역활을 하며 IMREAD_COLOR , IMREAD_GRAYSCALE , IMREAD_UNCHANGED 세가지가 존재한다 한다.

  • IMREAD_COLOR 는 이미지를 컬러로 출력한다는 의미이며 숫자로 1을 넣어도 되며, 기입 안할시 디폴트로 설정된다.

  • IMREAD_GRAYSCALE 는 이미지를 흑백으로 출력한다는 의미이고 숫자로는 0을 넣으면 된다.

  • IMREAD_UNCHANGED 는 이미지를 컬러 + 알파채널로 출력한다는 의미인며 숫자로는 -1을 넣으면 된다. 알파채널은 RGBA로 출력하는 것이며 투명도를 결정하는 A값이라 한다.

      이미지를 Mat 안에 저장하였다면 이제 출력을 하면 된다. 출력은 imshow() 함수를 사용하며 imshow(“windowName”, image) 형식의 파라미터가 필요하다.

    windowName 은 출력할 윈도우의 이름, image는 출력할 이미지다.

    waitKey(0)를 코드에 넣어서 키를 누르지 않으면 프로그램이 종료되지 않아 이미지가 사라지는 것을 방지할 수 있다.

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;


int main()
{
	//빈 행렬
	Mat color = imread("god.jpg", IMREAD_COLOR); // 원본
	Mat gray = imread("god.jpg", IMREAD_GRAYSCALE); // 원본
	Mat rgba=imread("god.jpg",IMREAD_UNCHANGED); // 원본

	
	imshow("ColorPrint", color);
	imshow("GratPrint", gray);
	imshow("rgbaPrint", rgba);


	waitKey(0);

	return 0;


}

  만약 내가 이미지의 색정보를 알고 싶다면 Image Watch 기능을 사용하면 쉽게 확인이 가능하다. Image Watch 를 사용하기 위해서는 Visual Studio 상단의 확장 -> 확장 관리 에서 Image Watch 를 검색해 다운받으면 된다.

  설치를 마쳤다면 Visual Studio 상단의 보기 -> 다른 창 -> Image Watch 를 클릭하여 나온 창을 보기 편한곳에 도킹하면 된다.

  이제 중단점을 설정하고 프로그램을 실행하면 방금 띄운 창에 Mat에 넣어둔 이미지가 출력된다. 이 이미지들에 휠을 돌려 확대하면 해당 이미지의 값을 확인하는 것이 가능하다.

0개의 댓글