如何在CMD中运行Python控制台视频渲染脚本?
在CMD中运行控制台视频渲染Python项目的方法及代码修复
一、CMD运行步骤
- 确认Python已添加到系统环境变量:打开CMD,输入
python --version,能正常显示版本号则说明配置正确;若未配置,需将Python安装目录下的python.exe路径添加到系统PATH变量中。 - 切换到项目目录:使用
cd命令定位到代码文件和视频文件所在的文件夹,例如:cd D:\YourProjectPath - 执行代码:输入以下命令运行你的Python文件(假设文件名为
console_video.py):
若系统中有多个Python版本,可使用python console_video.pypy -3 console_video.py指定Python3版本运行。 - 注意视频路径:确保
badapple.mp4与代码文件处于同一目录,或者在代码中填写视频的绝对路径(如vid = cv.VideoCapture('D:\YourProjectPath\badapple.mp4'))。
二、代码修复(解决CMD运行时的报错问题)
你的代码存在两处关键错误,会导致在CMD中运行时崩溃:
- 灰度转换参数错误:
cv.cvtColor应使用cv.COLOR_BGR2GRAY而非cv.IMREAD_GRAYSCALE,后者是读取图片时的参数。 - 灰度图通道访问错误:转换为灰度图后,每个像素是单个数值而非RGB数组,原代码中
j[2]会引发索引越界错误。
修复后的完整代码:
import cv2 as cv import numpy as np import os # 建议使用绝对路径避免路径问题 vid = cv.VideoCapture('badapple.mp4') input("按回车键开始...") ret, frame = vid.read() if not ret: print("无法读取视频文件,请检查路径是否正确") exit() a = frame.shape[0] / 50 b = frame.shape[1] // a * 2 # 设置CMD窗口大小 os.system(f"mode con cols={int(b)} lines=50") while True: cons_frame = '' ret, frame = vid.read() if not ret: break # 视频播放结束退出循环 # 调整帧大小适配控制台 new_frame1 = cv.resize(frame, (int(frame.shape[1]//a*2), 50), interpolation=cv.INTER_AREA) # 转换为灰度图 new_frame = cv.cvtColor(new_frame1, cv.COLOR_BGR2GRAY) for row in new_frame: for pixel in row: # 根据灰度值映射到不同字符 if pixel < 25: cons_frame += ' ' elif pixel < 50: cons_frame += '.' elif pixel < 75: cons_frame += '-' elif pixel < 100: cons_frame += ':' elif pixel < 125: cons_frame += '=' elif pixel < 150: cons_frame += '+' elif pixel < 175: cons_frame += 'x' elif pixel < 200: cons_frame += '#' elif pixel < 225: cons_frame += '%' else: cons_frame += '@' cons_frame += '\n' # 每行结束添加换行符,让帧正确换行显示 print(cons_frame, flush=True) # 按'd'键退出 if cv.waitKey(20) & 0xFF == ord('d'): break vid.release() cv.destroyAllWindows()
额外说明
- 添加了视频读取失败的判断,避免因视频路径错误导致的崩溃。
- 在每一行像素遍历结束后添加了换行符,确保控制台渲染的帧是正确的行列结构。
- 使用
f-string简化窗口大小设置的字符串拼接,代码更易读。
内容的提问来源于stack exchange,提问作者JeNya Bright
相关产品推荐
相关产品推荐

