From 9af85065aa65304b289aae8019ed4b4a232e46be Mon Sep 17 00:00:00 2001 From: zhanglei Date: Mon, 14 Sep 2026 14:47:02 +0800 Subject: [PATCH] =?UTF-8?q?python=20=E8=84=9A=E6=89=8B=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cvideo2.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 cvideo2.py diff --git a/cvideo2.py b/cvideo2.py new file mode 100644 index 0000000..1fa5d3c --- /dev/null +++ b/cvideo2.py @@ -0,0 +1,59 @@ +import cv2 +import numpy as np +import sys + +def convert_to_red_pseudo_color(input_path, output_path): + """ + 将自然光视频转换为红色伪彩效果 + """ + # 打开视频 + cap = cv2.VideoCapture(input_path) + if not cap.isOpened(): + print("❌ 无法打开视频文件,请检查路径是否正确") + return + + # 获取视频参数 + fps = cap.get(cv2.CAP_PROP_FPS) + width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + print(f"✅ 视频已加载,总帧数: {total_frames}, 分辨率: {width}x{height}, 帧率: {fps}") + + # 创建视频写入对象 + fourcc = cv2.VideoWriter_fourcc(*'mp4v') + out = cv2.VideoWriter(output_path, fourcc, fps, (width, height)) + + frame_count = 0 + while True: + ret, frame = cap.read() + if not ret: + break + + # 转为灰度图 + gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + # 纯红色伪彩 + red_pseudo = np.zeros_like(frame) + red_pseudo[:, :, 2] = gray # BGR 红色通道 + + # 增强效果 + red_pseudo = cv2.convertScaleAbs(red_pseudo, alpha=1.6, beta=35) + + out.write(red_pseudo) + frame_count += 1 + + if frame_count % 100 == 0: + print(f"处理进度: {frame_count}/{total_frames} ({frame_count/total_frames*100:.1f}%)") + + cap.release() + out.release() + print("\n🎉 转换完成!") + +if __name__ == "__main__": + # 支持命令行传参 + if len(sys.argv) != 3: + print("使用方法:python 脚本名.py 输入视频路径 输出视频路径") + else: + input_video = sys.argv[1] + output_video = sys.argv[2] + convert_to_red_pseudo_color(input_video, output_video) \ No newline at end of file