You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将黑白视频按自定义色彩映射转换为RGB视频

自定义色彩映射实现黑白视频转蓝绿黄渐变RGB视频

实现步骤

1. 像素值归一化与偏离度计算

先将原灰度视频的像素值(0-255)转换到[-1,1]区间,纯黑对应-1,中性灰(127)对应0,纯白对应1;再通过取绝对值得到每个像素偏离灰色的程度,范围为[0,1]:

import cv2
import numpy as np

def normalize_and_deviation(gray_frame):
    # 归一化到[-1, 1]区间
    normalized = (gray_frame / 127.5) - 1
    # 计算偏离灰色的程度(绝对值)
    deviation = np.abs(normalized)
    return deviation

2. 自定义蓝-绿-黄渐变映射

根据偏离度值生成对应RGB色彩:偏离度0(中性灰)对应纯蓝,偏离度1(纯黑/纯白)对应纯黄,中间值线性过渡。用numpy向量化运算保证处理效率:

def apply_color_map(deviation):
    # 将偏离度从[0,1]映射到[0,255]整数范围
    dev_scaled = deviation * 255
    # 分别计算RGB通道值
    r = dev_scaled
    g = np.minimum(dev_scaled * 2, 255)
    b = 255 - dev_scaled
    # 按OpenCV的BGR通道顺序堆叠,转为uint8格式
    rgb_frame = np.stack([b, g, r], axis=-1).astype(np.uint8)
    return rgb_frame

3. 视频处理主逻辑

读取输入黑白视频,逐帧处理后写入输出RGB视频:

def convert_video(input_path, output_path):
    # 打开输入视频
    cap = cv2.VideoCapture(input_path)
    if not cap.isOpened():
        raise ValueError("无法打开输入视频")
    
    # 获取视频基础参数
    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))
    
    # 初始化视频写入器,使用MP4编码器
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
    
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        
        # 彩色视频转为灰度图,灰度视频直接使用
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if len(frame.shape) == 3 else frame
        
        # 计算偏离度并应用色彩映射
        deviation = normalize_and_deviation(gray_frame)
        colored_frame = apply_color_map(deviation)
        
        # 写入输出帧
        out.write(colored_frame)
    
    # 释放资源
    cap.release()
    out.release()
    cv2.destroyAllWindows()

# 调用示例
convert_video("input_gray.mp4", "output_colored.mp4")

关键说明

  • 色彩映射逻辑:通过对R、G、B通道分别计算实现平滑渐变,无需分段判断,适合视频实时处理场景。
  • OpenCV通道兼容:因OpenCV默认使用BGR格式存储图像,堆叠通道时按B、G、R顺序排列,最终输出视频可正常按RGB格式播放。
  • 输入兼容性:支持灰度视频或彩色视频自动转灰度处理,无需额外预处理。

内容的提问来源于stack exchange,提问作者Chinmay Kane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:55:32