일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- linux
- 턱걸이
- 학습
- 텐서플로우
- 회귀
- TensorFlow
- C언어
- 시스템프로그래밍
- 코딩
- Computer Vision
- C++
- 프로그래밍
- OpenCV
- 쉘
- Windows10
- CV
- 백준알고리즘
- python
- c
- 백준
- error
- Windows 10
- shell
- 영상처리
- 리눅스
- 알고리즘
- 공부
- 딥러닝
- 운영체제
- 프로세스
- Today
- Total
줘이리의 인생적기
CV - opencv(C++) imread, imshow, waitkey, empty 본문
opencv에 대해 꾸준히 포스팅을 해보려고 합니다.
(visual studio community 2019, opencv 4.1.0 버전을 이용합니다.)
opencv를 공부하시는 분들이라면 다 아는 아주 유명한 사진이죠!
이 사진을 새로운 창에 새로운 이름으로 불러오기를 해봅시다.

#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(void) {
Mat image;
image = imread("lenna.bmp");
if (image.empty()) {
cerr << "Image load error" << endl;
return -1;
}
imshow("lenna image", image);
waitKey();
return 0;
}

imshow를 이용하여 창의 이름을 넣어주고 이미지를 불러왔습니다.
원하는 결과가 나왔죠?
폴더에 lenna파일이 없다면 Image load error 예외처리가 될 겁니다.
못 불러올 상황을 대비하여 써주면 좋은 if문입니다.
----------------------------------------------------------------------------------------------------
imread의 flag를 가지고 더 놀아볼까요!
파일명 다음의 flag와 결과를 집중해서 봐주세요
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(void) {
Mat image;
image = imread("lenna.bmp");
imshow("lenna default", image);
waitKey();
image = imread("lenna.bmp", IMREAD_UNCHANGED);
imshow("lenna UMCHANGED", image);
waitKey();
image = imread("lenna.bmp", IMREAD_GRAYSCALE);
imshow("lenna GRAYSCALE", image);
waitKey();
image = imread("lenna.bmp", IMREAD_REDUCED_GRAYSCALE_2);
imshow("lenna GRAYSCALE/2", image);
waitKey();
image = imread("lenna.bmp", IMREAD_REDUCED_COLOR_2);
imshow("lenna COLOR/2", image);
waitKey();
image = imread("lenna.bmp", IMREAD_REDUCED_COLOR_4);
imshow("lenna COLOR/4", image);
waitKey();
return 0;
}






어떤가요? 이러한 flag들로 흑백과 컬러, 배율을 쉽게 변경할 수 있습니다.
----------------------------------------------------------------------------------------------------
사용했던 함수들을 정리해 볼까요?
Mat imread(const String& filename, int flags);
영상을 불러오며 옵션 flag들로 다양하게 불러올 수 있습니다.
bool Mat::empty() const
행렬 멤버 변수가 0이거나, data 멤버 변수가 NULL이면 true를 반환합니다.
void imshow(const String& windowname, InputArray mat)
mat 인자로 전달된 영상 데이터를 출력합니다.
int waitKey(int delay = 0);
키 입력을 기다릴 시간을 정합니다. delay가 0보다 작다면 무한히 기다립니다.
반환값은 지정시간동안 키가 눌리지 않았다면 -1을 반환합니다.
다음은 클래스로 찾아뵙겠습니다!
----------------------------------------------------------------------------------------------------
참고 자료 : github.com/sunkyoo/opencv4cvml