inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 주피터 나도코딩

해결된 질문

147

Han Jun

작성한 질문수 7

0

안녕하세요, 나도코딩님의 강의를 듣다가 궁금증이 생겨 적어봅니다.

import cv2
img = cv2.imread('newspaper.jpg')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서

import cv2
img = cv2.imread('newspaper.jpg')
cv2.imshow('img', img)

이 세 문장은

cv2를 import하고

컴퓨터에 저장되어 있는 'newspaper.jpg' 파일을 읽어서 img로 저장하고

'img'라는 창에서 저장했던 img를 보여준다라고 제가 이해했어요.

 

그리고 그 아래 두 문장은

아무 키 입력을 무한 대기하고 아무 키를 받으면

모든 창을 닫아라라고 이해했는데요.

 

궁금한게 왜

import cv2
img = cv2.imread('newspaper.jpg')
cv2.imshow('img', img)

이 세 문장만으로 코드를 실행했을때 제가 저장했던 사진 창이 나오지 않고 그냥 사진 없는 회색 창이 나오며 창을 닫을라고 하면 약간의 렉이 걸릴까요? 맨 맽 두 문장의 코드가 코드 실행을 위해 꼭 필요한건가요? 만약 필요하다면 이유가 무엇인가요?

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Han Jun님, OpenCV를 활용한 이미지 처리에 대한 질문 주셔서 감사합니다.

질문하신 내용에 대한 답변은 다음과 같습니다.

우선, OpenCV의 imshow() 함수를 사용하여 이미지를 보여줄 때, 그 이미지를 유지하고 사용자 입력을 기다리기 위해서 waitKey() 함수를 사용합니다. waitKey(0)은 사용자가 어떤 키를 누를 때까지 무한히 대기하라는 의미입니다. 그래서 ‘아무 키’를 누를 때 윈도우가 종료되도록 destroyAllWindows() 함수를 사용하는 것이죠.

만약 waitKey() 함수가 없다면, OpenCV는 이미지를 화면에 띄웠다가 바로 넘어가버리기 때문에 우리 눈으로 이미지가 표시되는 것을 볼 수 없습니다. 또한 destroyAllWindows() 함수 또한 중요한데, 이 함수 없이 프로그램을 종료하려고 할 때 프로그램이 올바르게 종료되지 않을 수 있으며, 이로 인해 렉이 발생할 수 있습니다.

따라서 이미지를 화면에 보여주고, 사용자의 키 입력을 기다리며, 창을 올바르게 닫기 위해서는 ‘맨 마지막 두 문장’이 코드 실행에 꼭 필요합니다.

사진이 제대로 보이지 않고 회색 창만 나오며 렉이 걸린다면, 몇 가지 가능성이 있을 수 있습니다:
1. 파일 경로 문제: ‘newspaper.jpg’ 파일이 실제로 존재하는지 확인해야 합니다.
2. 이미지 파일 손상: 파일이 손상되거나 읽을 수 없는 형식일 수 있습니다.
3. OpenCV 동작 문제: OpenCV 설치가 올바르지 않거나 문제가 있는 경우 일 수도 있습니다.

현재 문제를 정확히 진단하기 위해서는 파일의 경로와 상태, 시스템과 OpenCV 설치 상태를 확인하는 것이 필요합니다. 만약 파일이 올바르게 존재하고 OpenCV도 정상적으로 설치되어있는데 문제가 발생한다면 추가적인 조사가 필요할 수 있습니다.

궁금하신 점이 해결되지 않았거나 다른 질문이 있으시면, 해당 강의의 커뮤니티 질문&답변 게시판에 질문해주시기 바랍니다. 강의에 대한 더 자세한 피드백은 강사님께서 확인하시고 답변해 주실 것입니다.

도움이 되었길 바라며, 학습에 성공적인 결과가 있기를 응원합니다!

케이테스트 서버 운영 방법

2

52

1

강의 추천해주세요

2

30

1

수업 잘 들었습니다.

2

22

2

맥유저 입장의 고려해주세요

2

55

1