[OpenCV]이미지 흑백으로 만들기

2018. 6. 6. 00:14Computer Vision

OpenCV를 이용해서 사진을 회색으로 바꿔주는 프로그램을 만들어 보았습니다.


그럼 바로 코드를 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<iostream>
#include<opencv2/opencv.hpp>
#include<conio.h>
using namespace std;
using namespace cv;
 
int main() {
    system("title Change to gray");
    
    string ImageLink;//이미지 주소
  cout << "이미지를 드래그해서 놓으세요" << endl;
    cin >> ImageLink;
 
    Mat Image = imread(ImageLink, CV_LOAD_IMAGE_GRAYSCALE);//이미지를 회색으로 불러오기

    cout << "저장하시려면 s를 눌러주세요" << endl;
 
    char save = _getch();
    if (save == 's' || save == 'S') {
        string save_name;
        cout << "저장 위치는 프로그램이 있은 위치입니다." << endl;
        cout << "저장할 이름을 입력하세요(확장자 포함) : ";
        
        cin >> save_name;
 
        
        imwrite(save_name, Image);//이미지 저장
 
        imshow("Preview", Image);//이미지창 띄우기
        waitKey();//키 입력이 들어올 때까지 창을 유지함
    }
}
 
cs


이 코드에서 보셔야할 부분은 13번째 줄과 27번째 줄 그리고 29번째 줄입니다.


13번째 줄의 Mat은 이미지 컨테이너입니다. 그리고 imread함수는 파일로부터 이미지를 불러오는 함수입니다.


imread(const string&filename, int flags = IMREAD_COLOR)

이런 식으로 함수가 되어있습니다.

그래서 Mat 변수명 = imread(이미지 주소, 플레그);이러면 이미지를 불러올 수 있습니다.


flag의 종류는 밑과 같습니다.(이보다 많습니다.)

*CV_LOAD_IMAGE_ANYDEPTH : 입력에 깊이가 있으면 16bit/32bit를 반환, 그렇지 않으면 8bit를 반환합니다.

*CV_LOAD_IMAGE_COLOR : 항상 이미지를 색상 1로 반환합니다.

*CV_LOAD_IMAGE_GRAYSCALE : 항상 이미지를 회색 스케일로 변환합니다.


27번째 줄은 imwrite라는 이미지 저장 함수입니다.

imwrite(const string&filename, inputArray img, const vector<int>&params = vector<int> () )

첫 인자에는 저장할 이름이 들어가고, 2번째 인자에는 Mat형 변수 이름이 들어가야 합니다.


29번째 줄은 imshow라는 이미지를 띄우는 함수입니다.

imshow(const string& winname, inputArray Mat)

첫 인자에는 창이 띄워지면 그 창의 이름을 정하는 인자입니다. 그리고 2번째 인자는 이미지를 띄울 Mat 변수를 넣으면 됩니다.



구동영상입니다.


BGM : 2SCOOPS - Donuts [NCS Release]

Link : https://www.youtube.com/watch?v=lc4Tt-CU-i0



감사합니다.


'Computer Vision' 카테고리의 다른 글

[OpenCV]OpenCV란?(OpenCV3.4.1 설치)  (0) 2018.05.20