관심쟁이 영호

[#2] OpenCV ㅣ 윈도우 창 제어 본문

학교공부/OpenCV

[#2] OpenCV ㅣ 윈도우 창 제어

관심쟁이 영호 2020. 10. 29. 01:30
반응형

안녕하세요.

관심쟁이 영호입니다.

오늘 하루도 평안하게 보내고 계신가요?


 

오늘의 OpenCV 공부는요!

윈도우 창 제어를 다룰 예정이에요.

바로 보시죠.

 

윈도우 창 제어.

윈도우 창을 이용하는 이유는요!

화소의 변화를 저희 눈으로 확인하기가 쉽고, 키보드와 마우스 이벤트를 감지하는데 쓰이기 때문이에요.

 

윈도우 창 제어 함수.

 

함수이름 함수 기능 함수 인자 옵션내용
namedWindow() 이름을 설정하고 해당 이름으로 윈도우창을 생성합니다. namedWindow(이름, 옵션) WINDOW_NORMAL
WINDOW_AUTOSIZE
WINDOW_OPENL
imshow() 생성된 윈도우창을 화면에 출력합니다. imshow(이름, 옵션) 윈도우에 표시되는 영상
(Mat타입)
destroyWindow 해당 윈도우창을 없앱니다. destroyWindow(이름) -
destroyAllWindows 모든 윈도우창을 없앱니다. 없음 -
moveWindow 윈도우창의 위치를 이동합니다. moveWindow(이름, x, y) -
resizeWindow 윈도우창의 크기를 바꿉니다. resizeWindow(width, height) -

이렇게 할 수 있어요!

그럼 실제 코드를 보겠습니다.

 

짜잔!

사진을 보시면 윈도우창을 만든 것을 볼 수 있어요!

 

코드를 천천히 설명드리면

 

Mat m1 = (200, 300, CV_8UC3, Scalar(15, 230, 100))

 200, 300짜리의 행렬을 CV_8U타입으로, C3 채널은 3개, 해당 행렬 값을 (15, 230, 100)으로 일괄 초기화!

 

string title = " 영호의 윈도우창"

 title이라는 string값을 저장

 

namedWindow(title, WINDOW_AUTOSIZE);

 윈도우 창을 생성하고 그것의 이름을 "title"변수가 가지고 있는 값으로 초기화, 해당 윈도우 사이즈는 들어가는 행렬에 맞게 만들어주세요!

 

imshow(title. m1)

title이라고 저장되어있는 윈도우창을 출력, 거기다가 m1이라는 행렬을 넣어주세요.

 

waitKey(0)

 별도의 입력이 있을 때까지 무한정 대기해주세요. (원래는 진짜 아주 잠깐 출력되었다가 바로 사라져요!)

 

이렇게 볼 수 있어요!

namedWindow의 옵션 값에 다른 것을 넣으면

예를 들어 namedWindow(title, WINDOW_NORMAL)을 할 시, 프로그램이 임의로 크기를 만들게 됩니다!

여기서 가장 중요한 게 AUTOSIZE를 할 경우에는 저희가 마우스로 윈도우창을 크게 하거나 작게 할 수가 없어요 ㅠ

 

심심해서 하나 더 만들어보았어요!

 

if문 조건 속에 waitKey값이 들어올 경우 "영호의 윈도우창"을 이동시키고 크기를 변경시키는 코드를 넣어보았어요!

아 참고로 waitKey(0)이 -1을 리턴한다는 뜻은 입력이 없다는 뜻입니다!

 

저 상태로 키보드를 아무거나 하나 입력해볼게요!

이렇게 윈도우창이 바뀌는 것을 볼 수 있어요!

if문 속에 waitKey를 넣어주여야 또 안 닫혀요 ㅠㅠ

 


흠..

여러분이 잘 이해되실까 모르겠네요..!

 

잘 모르시겠거나 오류를 발견하셨다면 언제든지

댓글로 말씀해주세요!

 

오늘 하루도 행복하세요.

300x250
Comments