当前位置: 首页 > article >正文

Python 将彩色视频转换为黑白视频(MP4-格式可选)

以下是使用 Python 将彩色视频转换为黑白电视风格的示例代码,主要借助了opencv-python库来实现:

python

import cv2

def convert_to_black_and_white_video(input_video_path, output_video_path):
    # 打开视频文件
    cap = cv2.VideoCapture(input_video_path)

    # 获取视频的帧率、宽度和高度等信息
    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))

    # 定义视频编解码器并创建VideoWriter对象
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height), isColor=False)

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        # 将彩色帧转换为黑白
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        # 将黑白帧写入输出视频文件
        out.write(gray_frame)

    # 释放资源
    cap.release()
    out.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    input_video_path = "your_input_video.mp4"  # 替换为实际的输入视频路径
    output_video_path = "output_video.mp4"  # 替换为你想要的输出视频路径
    convert_to_black_and_white_video(input_video_path, output_video_path)

在上述代码中:

  1. 首先使用cv2.VideoCapture打开输入的彩色视频文件,并获取视频的帧率、宽度和高度等基本信息。
  2. 然后定义了输出视频的编解码器和相关参数,创建了cv2.VideoWriter对象用于将处理后的帧写入新的视频文件。这里设置isColor=False表示输出的是黑白视频。
  3. 在循环中,不断从输入视频中读取每一帧,使用cv2.cvtColor函数将彩色帧转换为黑白帧,再将黑白帧写入输出视频文件。
  4. 最后,释放视频读取和写入的相关资源。

请确保在运行代码之前已经安装了opencv-python库,可以通过pip install opencv-python进行安装。同时,将代码中的输入和输出视频路径替换为你实际使用的路径。

效果如下


http://www.kler.cn/a/408173.html

相关文章:

  • cangjie (仓颉) vscode环境搭建
  • SpringBoot多文件上传
  • 【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作
  • 【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化
  • Java基础面试题04:Iterator 和 ListIterator 的区别是什么?
  • 01Web3.0行业
  • luckfox_pico_yolov5
  • AT_abc380
  • 游戏引擎学习第22天
  • Midjourney以图生图攻略,6个案例以学代练
  • 图文检索(27):Generalising Fine-Grained Sketch-Based Image Retrieval
  • (四)3D视觉机器人的手眼标定(眼在手外)
  • 16. 清理Python包管理工具(pip 和 conda)的缓存和冗余文件
  • 2024年 数模美赛 D题 湖流网络水位控制
  • Qt如何屏蔽工具栏(QToolBar)自动折叠功能
  • 嵌入式软件工程师岗位细分全景图
  • 嵌入式开发工程师面试题 - 2024/11/24
  • MATLAB的addpath和rmpath函数增加或删除路径
  • flink学习(6)——自定义source和kafka
  • CCF认证202406-02 | 矩阵重塑(其二)
  • 计算机网络socket编程(6)_TCP实网络编程现 Command_server
  • node报错:cb.apply is not a function
  • 附录 9A 计量经济学实验室#5
  • 二号交叉学科楼的英文表达是什么?No. 2 Interdisciplinary Research Building
  • 电子应用设计方案-22:智能门禁系统方案设计
  • React 表单Form 中的 useForm