代码加视频放入百度网盘,需要的兄弟自取:
链接:https://pan.baidu.com/s/1yTaEhmQz-2HmqNwPyX4Btw?pwd=72dk
提取码:72dk
项目介绍
在这篇博文中,我将分享一个有趣的小项目:“少帅下飞机 Python 版”。这个项目利用 Python 和 Tkinter 创建了一个将视频帧转换为 ASCII 艺术的显示器。它不仅展示了计算机视觉的基本应用,还结合了图形用户界面(GUI)设计,让我们以一种独特的方式观看视频。
项目原理
-
视频捕捉:我们使用 OpenCV 库读取视频文件。通过
cv2.VideoCapture
方法,可以打开指定路径的视频文件并逐帧读取。 -
灰度转换:每帧视频在处理前被转换为灰度图像。这样可以简化数据处理,使得每个像素的亮度值更易于映射到 ASCII 字符。
-
ASCII 映射:我们定义了一组字符,并将每个像素的亮度值转换为相应的 ASCII 字符。通过对像素值进行缩放,我们能够将更亮的像素映射到更“密集”的字符。
-
GUI 显示:使用 Tkinter 创建一个简单的 GUI 窗口,通过滚动文本框显示生成的 ASCII 艺术。每当读取新帧时,窗口会更新显示内容。
使用方法
-
环境准备:
- 确保安装 Python 和必要的库:
pip install opencv-python numpy
- 安装 Tkinter(通常随 Python 一起安装)。
- 确保安装 Python 和必要的库:
-
代码运行:
- 将以下代码复制到 Python 文件中,例如
ascii_video.py
:- 修改视频路径为你自己的视频文件路径。
import cv2 # 导入 OpenCV 库 cap = cv2.VideoCapture(r"C:\Users\Young\Desktop\major.mp4") # 打开视频文件 import numpy as np # 导入 NumPy 库 import time # 导入时间库 import tkinter as tk # 导入 Tkinter 库,用于创建 GUI from tkinter import scrolledtext # 从 Tkinter 导入滚动文本框 chars = ['#', 'S', '0', 'B', '+', '=', 'O', 'o', '8'] # 定义字符集 display_width = 450 # 设置显示宽度 display_height = 130 # 设置显示高度 def frame_to_ascii(frame): gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将帧转换为灰度图像 small_frame = cv2.resize(gray, (display_width, display_height)) # 调整图像尺寸 ascii_frame = ''.join(chars[min(pixel // (256 // len(chars)), len(chars) - 1)] for pixel in small_frame.flatten()) return '\n'.join([ascii_frame[i:i + display_width] for i in range(0, len(ascii_frame), display_width)]) root = tk.Tk() # 创建主窗口 root.title("少帅下飞机 Python 版") # 设置窗口标题 root.configure(bg='white') # 设置背景颜色 text_area = scrolledtext.ScrolledText(root, width=display_width, height=display_height, font=("Courier", 4), bg='white', fg='black') text_area.pack() # 添加文本框 def update_display(): ret, frame = cap.read() # 读取视频帧 if not ret: cap.release() # 释放视频对象 return ascii_art = frame_to_ascii(frame) # 转换为 ASCII 艺术 text_area.delete(1.0, tk.END) # 清空文本框 text_area.insert(tk.END, ascii_art) # 更新文本框 root.after(int(1000 / 30.70), update_display) # 更新显示 update_display() # 启动更新 root.mainloop() # 运行 Tkinter 循环
- 将以下代码复制到 Python 文件中,例如
-
运行程序:
你将看到一个窗口,视频将在其中播放。
总结
“少帅下飞机 Python 版”展示了如何将视频帧转换为字符,并通过简单的 GUI 显示出来。希望你们喜欢这个项目,并能从中获得灵感进行更复杂的创作!
如有任何问题或建议,欢迎在评论区留言!