일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- pandas
- CNN
- SQL
- 운영체제
- JSP/Servlet
- 데이터입출력구현
- 중학1-1
- 혼공머신
- 정수와유리수
- html/css
- CSS
- 자바 실습
- 데이터분석
- 머신러닝
- 정보처리기사실기
- 컴퓨터구조
- 텍스트마이닝
- 파이썬라이브러리
- numpy/pandas
- 컴퓨터비전
- 데이터베이스
- 파이썬
- 딥러닝
- 정보처리기사필기
- 연습문제
- 영어공부
- C++
- 중학수학
- 코딩테스트
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
비전 에이전트 4 - [비전 에이전트 3] 파노라마 영상 제작 본문
이번에는 파노라마 영상을 제작하는 실습을 진행해보겠다.
사진 한 장에 다 담을 수 없는 멋진 장관을 만났을 때 카메라 시점을 조금씩 돌려 여러 장을 찍은 다음 봉합하여 파노라마 영상으로 제작하곤 한다. 파노라마 기능은 디지털 카메라에 내장되어 있고 스마트폰 앱으로도 제공된다. 여기서는 OpenCV를 이용하여 파노라마 영상을 제작하는 비전 에이전트를 만들어본다. 파노라마 제작은 이전 단원에서 소개한 SIFT 특징을 이용하여 구현할 수 있다. OpenCV는 여러 장의 영상을 주면 자동으로 파노라마를 제작하는 sitch라는 아주 편리한 함수를 제공한다.
SIFT를 이용한 영상 봉합
먼저 프로그램 6-5의 실행 경과를 보고 사용자 인터베이스를 확인해보자. <영상 수집> 버튼은 웹 캠으로 영상을 수집할 때 사용한다. <영상 보기> 버튼은 수집한 영상을 확인할 때, <봉합> 버튼은 수집한 영상을 봉합하여 파노라마 영상을 제작할 때 사용한다.
<영상 수집> 버튼을 이용하여 영상 수집을 마치기 전에는 <영상 보기>, <봉합>, <저장> 버튼을 비활성 상태로 설정하여 작업 순서를 지키도록 유도한다.
비디오에서 수집한 영상을 봉합하여 파노라마 영상 제작하기
이번에는 자세한 코드 설명은 생략하겠다. 모두 지난번에 사용했던 코드와 별로 달라진 것은 없어보인다.
47행은 영상을 수집하는 요령, 즉 c를 여러 번 눌러 수집하고 q로 끝내라는 메시지를 사용자에게 알린다. 사용자가 c를 누를 때마다 그때의 영상을 imgs에 추가한다.
63~34행은 수집된 영상의 수를 레이블에 표시한다. 이 영상을 0.25배로 축소하고 hstack 함수로 이어붙인다.
프로그램의 실행 결과는 영상 네 장을 수집한 결과를 보여준다. 이들을 봉합한 파노라마 영상의 품질이 상당히 뛰어난 것을 확인할 수 있다. 여러 번 시도하면서 성능을 가늠해보자.
코드 동작 요약
- 영상 수집 버튼을 누르면 카메라가 켜지고, 'c' 키를 눌러 여러 프레임을 수집할 수 있다. 'q' 키를 누르면 수집을 종료한다.
- 영상 보기 버튼을 누르면 수집된 영상을 축소하여 화면에 표시한다.
- 봉합 버튼을 눌러 수집된 이미지를 파노라마로 결합한다.
- 저장 버튼으로 생성된 파노라마 이미지를 파일로 저장한다.
- 나가기 버튼을 눌러 프로그램을 종료한다.
주의사항
- 파노라마 결합이 실패할 수 있는데, 이는 수집된 이미지들이 적절히 겹쳐지지 않거나 장면에 큰 변화가 있는 경우 발생할 수 있다.
코드 실행해보기
영상 수집을 누르면 카메라가 켜지고 c를 누르면서 사진을 찍는 것이다.
이렇게 4장의 사진이 수집되었다.
파노라마 제작에 실패해서 한번 더 시도해보았다. 아마도 비슷한 사진이 아닌 것들을 묶어서 그런 것 같았다.
다시 한번 영상 제작하기
영상을 5장 수집해서 다음과 같은 파노라마가 완성되었다.
이번에는 화분으로만 사진을 찍었다.
너무 이미지가 길어서 한번에 다 담을 수 없었다.
전체 이미지는 이렇게 된다.
학습을 마치고
파노라마 사진을 제작해보니 정말 재미있고 흥미로웠다. 처음에는 어떻게 찍는지 몰라서 한참 헤매기도 했고 코드를 엉뚱한 것을 실행해서 주석까지 다 달고 편집했는데 다시 처음부터 작업을 해야 했다. 난 작업을 할 때 원본 파일에다 덮어써 코드를 저장하며 사용했는데 원본을 잘못 저장하니 다시 자료를 받아야 하는 수고를 했다.
다음에는 원본은 하나 놔두고 복사본에서 작업을 할 생각이다.
집안에서만 사진을 찍으니 별로 멋스러운 광경은 찍지 못했지만 나중에 외부에 촬영을 나가 사용하면 정말 멋진 작품도 나올 것 같았다. 마지막으로 특수 효과에 대해서도 공부해보겠다.
'인공지능 > 컴퓨터 비전' 카테고리의 다른 글
비전 에이전트 6 - [비전 에이전트 4] 특수 효과 2 : 비디오 특수 효과 (0) | 2024.11.12 |
---|---|
비전 에이전트 5 - [비전 에이전트 4] 특수 효과 1 : 특수 효과의 원리와 정지 영상의 특수 효과 (0) | 2024.11.12 |
비전 에이전트 3 - [비전 에이전트 2] 교통약자 보호구역 알림 (4) | 2024.11.12 |
비전 에이전트 2 - [비전 에이전트 1] 오림 (1) | 2024.11.12 |
비전 에이전트 1 - 지능 에이전트로서 비전 에이전트와 PyQt를 이용한 사용자 인터페이스 (2) | 2024.11.11 |