首页 > 编程语言 >python将图片添加到视频底层中

python将图片添加到视频底层中

时间:2024-04-28 14:44:05浏览次数:18  
标签:视频 python image video print path folder frame 底层

代码:

import cv2
import numpy as np
import os
import random

# 图片文件夹路径
image_folder_path = 'path_to_your_images_folder'

# 视频文件所在的文件夹路径
video_folder_path = 'path_to_your_videos_folder'

# 输出视频文件夹路径(如果不存在则创建)
output_folder_path = 'path_to_your_output_folder'
if not os.path.exists(output_folder_path):
    os.makedirs(output_folder_path)

# 确保图片文件夹路径存在
if not os.path.exists(image_folder_path):
    print("图片文件夹路径不存在。")
else:
    # 获取图片文件夹中所有图片文件的列表
    image_files = [f for f in os.listdir(image_folder_path) if f.lower().endswith(('.jpg', '.jpeg', '.png'))]
    if not image_files:
        print("图片文件夹中未找到图片。")
    else:
        # 随机选择一张图片
        random_image_file = random.choice(image_files)
        random_image_path = os.path.join(image_folder_path, random_image_file)
        print(f"选定用于叠加的图片:{random_image_file}")

# 确保视频文件夹路径存在
if not os.path.exists(video_folder_path):
    print("视频文件夹路径不存在。")
else:
    # 遍历视频文件夹中的所有视频文件
    for video_file in os.listdir(video_folder_path):
        if video_file.lower().endswith(('.mp4', '.avi', '.mov', '.mkv')):
            print(f"正在处理视频:{video_file}")
            
            # 视频文件的完整路径
            video_path = os.path.join(video_folder_path, video_file)
            
            # 输出视频文件的完整路径,保存到新的输出文件夹中
            output_video_path = os.path.join(output_folder_path, video_file)
            
            # 打印视频路径信息
            print(f"视频文件路径:{video_path}")
            print(f"输出视频路径:{output_video_path}")
            
            # 尝试读取随机选择的图片
            image = cv2.imread(random_image_path)
            if image is None:
                print(f"图片加载失败:{random_image_path}")
                continue
            
            # 尝试打开视频文件
            cap = cv2.VideoCapture(video_path)
            if not cap.isOpened():
                print(f"视频打开失败:{video_path}")
                continue
            
            # 获取视频的帧率和尺寸
            fps = cap.get(cv2.CAP_PROP_FPS)
            frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
            frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
            print(f"帧宽度:{frame_width}, 帧高度:{frame_height}, 帧率:{fps}")
            
            # 创建视频写入对象
            fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 根据视频格式可能需要更改编解码器
            out = cv2.VideoWriter(output_video_path, fourcc, fps, (frame_width, frame_height))
            
            # 处理视频的每一帧
            while True:
                ret, frame = cap.read()
                if not ret:
                    break
                
                # 将图片放在帧的底层
                frame[:frame_height, :frame_width, :] = image
                
                # 将处理后的帧写入输出视频
                out.write(frame)
            
            # 释放视频读取和写入对象
            cap.release()
            out.release()
            print(f"完成处理 {video_file}")
        else:
            print(f"跳过文件:{video_file}(不支持的格式)")

 

标签:视频,python,image,video,print,path,folder,frame,底层
From: https://www.cnblogs.com/jingzaixin/p/18163696

相关文章

  • python篇--创建桌面快捷方式
    创建快捷方式import osfrom win32com.client import Dispatchdef create_shortcut(target_path, shorcut_path):    shell = Dispatch('WScript.Shell')    shortcut = shell.CreateShortcut(shorcut_path)    shortcut.TargetPath = target_path    ......
  • 脚本语言系列之Python | python练习题最全题库(1)
    脚本语言系列之Python|python练习题最全题库(1)脚本语言系列之Python|python练习题最全题库(1) 精选python语言基础的填空题400+,并附有答案,初学者一定要刷一遍。刷题前,可以先看一遍基础知识点,已梳理好,移步:测试allen说:脚本语言系列之Python|系列文章传送门这......
  • Python: Regular expressions
     #引用库importre正则表达式的方式#1.re.compile():该函数用于生成一个正则表达式,也就是匹配的核心部分,用来定义你需要怎么匹配,匹配什么内容,更多细节可以去参看菜鸟教程。#2.re.findall():该函数用于在指定的字符串中进行匹配。#str1='lukfook8-hon......
  • python可复用代码(连接数据库/字符串处理/爬虫/日志配置)【1】
    importpymysqlimportloggingimporttimeimportrandomimportloggingimportrequestsfrombs4importBeautifulSoup"""获取数据库连接"""#连接数据库获取游标defget_conn():""":return:连接,游标""&qu......
  • Alibaba Cloud Linux release 3 Python 3.8 安装
    AlibabaCloudLinuxrelease3Python3.8安装https://zhuanlan.zhihu.com/p/690125733背景买了台阿里云服务器玩玩,项目需要Python3.8,但是机器上配置了3.6.8机器信息:机器信息:Linuxversion5.10.134-16.1.al8.x86_64AlibabaCloudLinuxrelease3linux的多python版......
  • Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等
    Python中确实有多个库可以用于操作Excel文件,包括但不限于xlsxwriter、openpyxl、pandas和xlwings。以下是这些库的简要介绍和它们各自的优点:xlsxwriter:优点:专门用于创建新的.xlsx文件。提供了丰富的功能来创建复杂的Excel文档,包括图表、图片、自动筛选等。性能相对较......
  • 11个Python循环技巧
    本文分享自华为云社区《Python中的循环技巧指南》,作者:柠檬味拥抱。当我们处理数据时,有时候需要创建多个列表以存储不同类型或不同条件下的数据。在Python中,我们可以利用循环来快速、高效地创建这些列表。本文将介绍如何使用循环在Python中创建多个列表,并提供代码实例。python用......
  • 短视频app制作,实现数据隔离可选方案有很多
    一、JDBC数据源隔离在短视频app制作中,数据隔离需要对DB,Redis,RabbitMQ进行数据隔离通过实现Spring动态数据源AbstractRoutingDataSource,通过ThreadLocal识别出来压测数据,如果是压测数据就路由到影子库,如果是正常流量则路由到主库,通过流量识别的改造,各个服务都已经能够......
  • 朋友圈怎么插入高清晰视频
    在朋友圈发高清晰视频,你可以遵循以下步骤和技巧:1.**录制或获取高清视频**:首先,确保你有一个高质量的原始视频。你可以使用专业的相机或手机进行录制,或者使用高清的视频素材。2.**使用视频编辑软件**:使用视频编辑软件,如AdobePremiere、FinalCutPro等,对视频进行剪辑和调整。在......
  • 微信发视频确实存在一些限制,需要注意什么
    微信发视频确实存在一些限制,这些限制主要涉及到视频的长度、大小和格式等方面。首先,对于视频的长度,微信朋友圈小视频的用户可以从手机相册中选择或者现场拍摄,但单个视频时长不能超过1分钟。这主要是出于网络传输效率、用户注意力以及防止滥用的考虑。然而,如果想发送超过1分钟的视......