관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

OpenCV로 시작하는 컴퓨터 비전 6 - 웹캠에서 비디오 읽기 : OpenCV 환경 설정 다시 해보기 본문

인공지능/컴퓨터 비전

OpenCV로 시작하는 컴퓨터 비전 6 - 웹캠에서 비디오 읽기 : OpenCV 환경 설정 다시 해보기

huenuri 2024. 11. 7. 22:18

이제 저녁을 먹고 저녁 공부를 시작해 본다. 오늘은 공부를 별로 하지 못해서 아쉬움이 많이 든다. 그래도 중요한 일을 했으니 오늘도 정말 의미 있는 하루였다. 하루를 공부로 마무리해 볼 것이다. 아마 1시간 정도 하면 졸려서 더는 하지 못할 테니 할 수 있는 만큼 해보자.


 

 

 

 

웹 캠에서 비디오 읽기

웹 캠을 통해 동영상을 받는 프로그래밍을 해볼 것이다. 노트북에는 웹 캠이 기본으로 장착되어 있어 그대로 사용하면 되고 데스크톱 PC에서 실험하는 경우에는 별도로 웹 캠을 설치해야 한다.

난 주로 PC에서 사용하니 며칠 전에 웹 캠을 주문해서 오늘 아침에 연결해보았다. 컴퓨터 비전을 공부할 때는 웹 캠이 필수이다. 

 

웹 캠에서 비디오 읽는 실습해보기

웹 캠을 통해 입력되는 동영상을 윈도우에 디스플레이하는 프로그램이다.

 

웹 캠으로 비디오 획득하기

 

 

 

이렇게 웹 캠으로 비디오가 잘 출력되었다. 4행의 VideoCapture 함수는 웹 캠과 연결을 시도하고 결과를 cap 객체에 저장한다. 첫 번째 인수로 웹 캠 번호를 지정하는데, 웹 캠이 하나인 경우에는 0을 준다. 두 번째 인수는 비디오가 화면에 바로 나타나게 한다. 웹 캠과 연결에 실패하는 경우 cap 객체의 isOpened 함수가 False 값을 가진다.

6~7행은 연결 실패의 경우 오류 메시지를 출력하고 프로그램을 종료한다.

 

9행의 while 문은 동영상을 입력하는 10~20행을 무한 반복한다. 도중에 사용자가 q를 입력하면 break 문을 통해 빠져나간다. 10행은 cap 객체의 read 함수를 호출한다. read 함수는 호출한 순간의 영상 한 장, 즉 프레임을 획득하고 성공 여부와 함께 프레임을 반환한다. 따라서 10행은 ret 객체에 성공 여부를 저장하고 frame 객체에 프레임을 저장한다.


 

 

 

 

비디오에서 영상 수집하기

다음 예제는 비디오에서 영상을 수집할 수 있게 확장한 프로그램으로 앞선 예제의 골격을 그대로 사용한다. 

 

비디오에서 수집한 영상을 이어 붙이기

 

 

하지만 코드가 실행되지 않고 이런 오류만 떴다. 

 

이 메시지는 현재 가상환경(cv)에 Spyder가 콘솔을 생성하는 데 필요한 spyder-kernels 모듈이 설치되지 않았거나, 버전이 맞지 않아서 발생하는 오류이다. spyder-kernels는 Spyder가 가상환경과 연결하여 코드를 실행할 수 있도록 도와주는 모듈이다. 이 문제를 해결하려면 cv 환경에 올바른 버전의 spyder-kernels를 설치해줘야 한다.


 

 

환경 설정 다시 해보기

 

가상환경에서 스파이더 커널 설치하기

 

 

이처럼 커널을 설치하고 스파이더를 재시작하면 된다. 하지만 이렇게 해도 조금 전에 콘솔창 오류가 없어지지 않았다. 다시 한번 설치를 진행하기로 했다.


 

 

 

스파이더 커널 재설치하기

다시 한번 설치를 진행해 보았다.

 

 

조금 전에 설치할 때의 화면과는 많이 달라진 모습이 보인다. 같은 코드인데도 이럴 수 있나 싶다. 스파이더에서 Python Interpreter 설정은 확인해 보았는데 이건 조금 전에 변경한 것 그대로 잘 되어 있다.

 

 

 

 

 

이제 콘솔창의 오류가 사라졌다.

 

 

 

 

커널 버전은 2.5로 잘 되어있다. 하지만 이런 오류 메시지가 뜨며 다른 문제가 또 발생했다. 하나를 해결하면 또 다른 문제가 발생한다.

 

 

 

cv2 모듈이 설치되어 있지 않다는 것이다.


 

 

 

OpenCV 재설치하기

 

 

cv 가상환경에서 설치 목록을 확인해 보니 아무것도 표시가 되어 있지 않다. 분명히 설치를 해주었는데 말이다. 그럼 다시 설치를 진행해야 한다.

 

 

 

 

 

 

이런 식으로 설치가 진행된다.

 

 

 

 

 

 

OpenCV가 잘 설치되었는지 확인해보니 여기 있다. 그리고 OpenCV를 하위 버전으로 설치를 진행해 주었다.

 

 

 

 

그런 다음에는 스파이더의 설정을 초기화해서 지금까지 잘못 설정했던 부분을 되돌려 놓았다.

 

 

 

 

 

 

그런 후에도 "The system cannot find the path specified."이런 문구가 떠서 작업 공간을 변경해 주었고, 여기에 한글 이름이 있어 혹시 문제가 되나 싶어 영어 이름으로 변경했다. 이렇게 한 다음에는 코드가 처음으로 실행되었다.

 


 

 

 

학습을 마치고

어제 이 부분을 밤늦게까지 고민하며 시도해 보았으나 잘 되지 않아 다음날 새벽 1시 50분쯤 일어나 이 문제를 해결했다. 너무나도 기뻤다. 역시 해결하기로 마음먹고 달려들면 해결하지 못할 문제는 없었다.

다음 포스트에 이어서 학습을 진행해 보겠다.