이 프로젝트는 일반 비디오를 ASCII 문자 형태로 변환하여 터미널에서 실시간 재생하는 Python 프로그램입니다.
흑백/컬러 모드를 자유롭게 전환할 수 있고, 해상도 조절, 텍스트 저장, ASCII 기반 영상 녹화 기능까지 지원합니다.
💡 영상은 저작권 없는 무료 영상 사이트 Pexels에서 다운로드하였습니다.
이 프로그램은 비디오를 실시간으로 프레임 단위로 분석하고, 각 픽셀의 밝기나 색상 값을 기반으로 ASCII 문자로 변환하여 터미널에 출력합니다.
OpenCV를 사용하여 비디오를 프레임 단위로 읽어옵니다.
터미널에 적절한 해상도로 보이도록 프레임 크기를 조정합니다. (가로 너비 기준, 세로는 비율 보정)
resized = cv2.resize(frame, (width, height))
- 흑백 모드: 픽셀의 밝기(gray scale intensity)를 계산하고, 정해둔 문자 세트에서 어두운 픽셀은
@
, 밝은 픽셀은.
등으로 매핑합니다. - 컬러 모드: 색상(RGB)은 유지하되, 밝기를 기준으로 문자 선택 → ANSI 컬러 코드를 적용하여 컬러 출력합니다.
# 밝기에 따라 문자 선택
brightness = int((r + g + b) / 3)
char = ASCII_CHARS[brightness * len(ASCII_CHARS) // 256]
# ANSI 컬러로 출력
f"\033[38;2;{r};{g};{b}m{char}\033[0m"
- 터미널에는 실시간으로 ASCII 프레임이 출력됩니다.
v
키를 누르면 현재 프레임들을.png
로 저장하여.avi
영상으로 저장할 수 있습니다.
키 입력 | 기능 설명 |
---|---|
c |
컬러 모드 <-> 흑백 모드 전환 |
- |
ASCII 해상도 감소 (녹화 중일 때 제한) |
+ |
ASCII 해상도 증가 (녹화 중일 때 제한) |
s |
현재 ASCII 프레임을 .txt 파일로 저장 |
v |
영상 녹화 시작/종료 |
q |
프로그램 종료 |
OpenCV는 키보드 입력을 활성화된 창(focused window)
에서만 인식합니다.
이 프로그램은 cv2.imshow("dummy", frame[0:1, 0:1])
으로 아주 작은 더미 창을 띄우며,
반드시 해당 창을 클릭해 선택한 상태여야 키 입력이 정상 동작합니다.
다른 프로그램이나 터미널 창을 클릭했다면, 다시 더미 창을 클릭하세요!
- ASCII 기반 실시간 비디오 재생 (터미널 출력)
- 흑백 / 컬러 모드 전환 가능
- 영상 녹화 기능 (
recording/
폴더에 저장) - 단일 프레임
.txt
저장 (text/
폴더에 저장) - 해상도 조정 기능
- Windows 터미널, Git Bash, VSCode 등에서 실행 가능
- 영상 출처: Pexels - 무료 영상 제공 사이트
- 폰트: Consolas (
C:/Windows/Fonts/consola.ttf
) 기본 설정 사용 - Python 3.7 이상 권장