해결된 질문
작성
·
141
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 인턴입니다.
Han Jun님, OpenCV를 활용한 이미지 처리에 대한 질문 주셔서 감사합니다.
질문하신 내용에 대한 답변은 다음과 같습니다.
우선, OpenCV의 imshow()
함수를 사용하여 이미지를 보여줄 때, 그 이미지를 유지하고 사용자 입력을 기다리기 위해서 waitKey()
함수를 사용합니다. waitKey(0)
은 사용자가 어떤 키를 누를 때까지 무한히 대기하라는 의미입니다. 그래서 ‘아무 키’를 누를 때 윈도우가 종료되도록 destroyAllWindows()
함수를 사용하는 것이죠.
만약 waitKey()
함수가 없다면, OpenCV는 이미지를 화면에 띄웠다가 바로 넘어가버리기 때문에 우리 눈으로 이미지가 표시되는 것을 볼 수 없습니다. 또한 destroyAllWindows()
함수 또한 중요한데, 이 함수 없이 프로그램을 종료하려고 할 때 프로그램이 올바르게 종료되지 않을 수 있으며, 이로 인해 렉이 발생할 수 있습니다.
따라서 이미지를 화면에 보여주고, 사용자의 키 입력을 기다리며, 창을 올바르게 닫기 위해서는 ‘맨 마지막 두 문장’이 코드 실행에 꼭 필요합니다.
사진이 제대로 보이지 않고 회색 창만 나오며 렉이 걸린다면, 몇 가지 가능성이 있을 수 있습니다:
1. 파일 경로 문제: ‘newspaper.jpg’ 파일이 실제로 존재하는지 확인해야 합니다.
2. 이미지 파일 손상: 파일이 손상되거나 읽을 수 없는 형식일 수 있습니다.
3. OpenCV 동작 문제: OpenCV 설치가 올바르지 않거나 문제가 있는 경우 일 수도 있습니다.
현재 문제를 정확히 진단하기 위해서는 파일의 경로와 상태, 시스템과 OpenCV 설치 상태를 확인하는 것이 필요합니다. 만약 파일이 올바르게 존재하고 OpenCV도 정상적으로 설치되어있는데 문제가 발생한다면 추가적인 조사가 필요할 수 있습니다.
궁금하신 점이 해결되지 않았거나 다른 질문이 있으시면, 해당 강의의 커뮤니티 질문&답변 게시판에 질문해주시기 바랍니다. 강의에 대한 더 자세한 피드백은 강사님께서 확인하시고 답변해 주실 것입니다.
도움이 되었길 바라며, 학습에 성공적인 결과가 있기를 응원합니다!