오늘부터 공부한다
OpenCV [C++] 기초 2 본문
기초 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 |
---|