python:利用opencv实现图片转视频,视频转图片

   需要安装OpenCV环境,视频转图片代码如下:

import cv2
def Video2Pic():
    videoPath = r"video/yolov5+deep+best2.mp4"  # 读取视频路径
    imgPath = r"picture/yolov5+deep+best2/"  # 保存图片路径,路径最后加/斜杠

    cap = cv2.VideoCapture(videoPath)
    suc = cap.isOpened()  # 是否成功打开
    frame_count = 0
    while suc:
        frame_count += 1
        suc, frame = cap.read()
        cv2.imwrite(imgPath + str(frame_count).zfill(4)+'.jpg', frame)#转化图片的格式,可改成png
        cv2.waitKey(1)
    cap.release()
    print("视频转图片结束!")
if __name__ == '__main__':
     Video2Pic()

    好像会有警告,但不影响正常转化。

  接下来是图片转视频代码:

import cv2
import os
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')  # 设置输出视频为mp4格式
# cap_fps是帧率,根据自己需求设置帧率
cap_fps = 30

# size要和图片的size一样,但是通过img.shape得到图像的参数是(height,width,channel),
# 可以实现在图片文件夹下查看图片属性,获得图片的分辨率
size = (1920,1080)#size(width,height)
# 设置输出视频的参数,如果是灰度图,可以加上 isColor = 0 这个参数
# video = cv2.VideoWriter('results/result.avi',fourcc, cap_fps, size, isColor=0)
video = cv2.VideoWriter('result.mp4', fourcc, cap_fps, size)#设置保存视频的名称和路径,默认在根目录下

path = './he_chen_video/'#设置图片文件夹的路径,末尾加/
file_lst = os.listdir(path)
for filename in file_lst:
    img = cv2.imread(path + filename)
    video.write(img)
video.release()

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,以下是利用OpenCVPython实现多张图片拼接成一个视频的代码示例: ```python import cv2 import os # 设置要拼接的图片路径和输出视频路径 img_path = 'image_folder/' video_path = 'output_video.avi' # 获取图片列表 img_list = os.listdir(img_path) # 获取第一张图片的大小 img = cv2.imread(os.path.join(img_path, img_list[])) height, width, layers = img.shape # 创建视频对象 video = cv2.VideoWriter(video_path, cv2.VideoWriter_fourcc(*'XVID'), 24, (width, height)) # 遍历图片列表,将每张图片写入视频 for img_name in img_list: img = cv2.imread(os.path.join(img_path, img_name)) video.write(img) # 释放视频对象 video.release() ``` 以上代码将会把指定文件夹中的所有图片按照文件名的顺序拼接成一个视频,并保存到指定路径下。 ### 回答2: 要利用OpenCVPython实现多张图片拼接成一个视频,可以按照以下步骤编写代码: 1. 导入所需的库: ```python import cv2 import os ``` 2. 指定图片文件夹路径和视频输出路径: ```python image_folder = '图片文件夹路径' video_name = '视频输出路径/视频名称.mp4' ``` 3. 获取图片文件夹中所有图片的文件名列表: ```python images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")] images.sort() # 按文件名排序 ``` 4. 获取第一张图片的尺寸作为视频帧的尺寸: ```python frame = cv2.imread(os.path.join(image_folder, images[0])) height, width, layers = frame.shape ``` 5. 初始化视频编码器: ```python fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 可根据视频格式进行修改 video = cv2.VideoWriter(video_name, fourcc, 30, (width, height)) ``` 6. 遍历图片列表,将每张图片写入视频: ```python for image in images: video.write(cv2.imread(os.path.join(image_folder, image))) ``` 7. 释放资源: ```python cv2.destroyAllWindows() video.release() ``` 完成以上步骤后,运行代码即可将指定文件夹中的多张图片拼接成一个视频保存在指定路径。 ### 回答3: 要使用OpenCVPython来将多张图片拼接成一个视频,可以按照以下步骤实现: 1. 导入必要的库:导入OpenCV库和Python库。 ```python import cv2 import os ``` 2. 设置输入的图片路径和输出视频的路径。 ```python image_folder = '图片文件夹路径' video_name = '视频输出路径/视频名字.mp4' ``` 3. 获取图片列表并按文件名排序。 ```python images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")] images.sort(key=lambda x: int(x.split('.')[0])) ``` 4. 获取第一张图片的尺寸,并创建一个视频写入对象。 ```python frame = cv2.imread(os.path.join(image_folder, images[0])) height, width, layers = frame.shape video = cv2.VideoWriter(video_name, 0, 1, (width, height)) ``` 5. 将每张图片读取并写入视频。 ```python for image in images: video.write(cv2.imread(os.path.join(image_folder, image))) ``` 6. 释放资源。 ```python cv2.destroyAllWindows() video.release() ``` 完整的代码如下: ```python import cv2 import os image_folder = '图片文件夹路径' video_name = '视频输出路径/视频名字.mp4' images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")] images.sort(key=lambda x: int(x.split('.')[0])) frame = cv2.imread(os.path.join(image_folder, images[0])) height, width, layers = frame.shape video = cv2.VideoWriter(video_name, 0, 1, (width, height)) for image in images: video.write(cv2.imread(os.path.join(image_folder, image))) cv2.destroyAllWindows() video.release() ``` 将以上代码中的"图片文件夹路径"替换为包含要拼接为视频的多张图片的文件夹路径,并将"视频输出路径/视频名字.mp4"替换为期望输出的视频路径和名称。运行代码后,即可生成拼接后的视频

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值