반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags more
Archives
Today
Total
관리 메뉴

오늘부터 공부한다

OpenCV [C++] 기초 2 본문

openCV [c++]

OpenCV [C++] 기초 2

1000hg 2019. 12. 25. 14:58
반응형

기초 1을 기반으로 조금 더 진도를 나가보았다.

 

 

 

1. 코드 작성


using namespace std;

using namespace cv;

 

int main()

{

    Mat img_color;

 

    img_color = imread("이름.jpg"IMREAD_COLOR);

    if (img_color.empty())

    {

        cout << "이미지를 찾을 수 없음" << std::endl;

        return -1;

    }

    Mat img_gray;

 

    cvtColor(img_color, img_gray, COLOR_BGR2GRAY);

    imwrite("이름.jpg", img_gray);

 

 

    namedWindow("BGR", WINDOW_AUTOSIZE);

    namedWindow("Grayscale", WINDOW_AUTOSIZE);

 

    imshow("BGR", img_color);

    imshow("Grayscale", img_gray);

 

 

    while (waitKey(0!= 27);

 

    return 0;

}

 

이번 코드에서는 기초 1에서 봤던 코드들이 상당히 보일 것이다.

 

Mat img_color : 이미지를 담는 곳

 

 

img_color = imread("이름.jpg"IMREAD_COLOR) : 이미지를 imread를 이용하여 담는다.

 

여기서 IMREAD_COLOR는 BGR 포맷으로 변환한다는 것이다.

(쉽게는 컬러가 적용된 이미지로 나오게 한다. 정도로 이해하면 된다.)

 

왜 RGB가 아니라 BGR이냐는 궁금증이 들 수도 있다.

그건 작성자도 잘 모르겠다.

 

 

 

Mat img_gray;

 

cvtColor(img_color, img_gray, COLOR_BGR2GRAY);

imwrite("이름.jpg", img_gray);

 

 

여기서 부터가 이제 알아야하는 것들이다.

 

cvtColor함수는 색상을 변환시켜 다른 저장소에 넣는 함수로,

이전에 BGR 포맷을 담은 img_color의 컬러 이미지를

그레이스케일(COLOR_BGR2GRAY) 이미지로 변환하여 img_gray에 저장시킨다.

 

그리고 imwrite("원하는 이름.jpg", img_gray); 에서 입력한 이름으로 이미지를 저장하는 역할을 한다.

 

 

 

 

 

이후 namedWindow에서 imshow를 하고

 

 

 

  while (waitKey(0!= 27);

 

=> keyCode(27) 즉, esc버튼을 눌렸을 때 종료한다.

 

 

 

2. 결과

 

새로운 창 2개가 생겼고, 하나는 컬러 다른 하나는 흑백의 사진이 나왔다.

 

 

그리고 프로젝트 이미지를 가보면, 흑백 사진이 저장되어 있는 것을 볼 수 있다.

반응형

'openCV [c++]' 카테고리의 다른 글

OpenCV [C++] 기초 1  (0) 2019.12.25