python opencv 将不同shape尺寸的图片制作video视频

python opencv 将不同shape尺寸的图片制作video视频。

具体代码实现如下:

python 复制代码
import os
import cv2
import time
import shutil
def resize_img_keep_ratio(img, target_size):

    old_size = img.shape[:2]  # 原始图像大小
    ratio = min(target_size[i] / old_size[i] for i in range(len(old_size)))  # 计算比例
    new_size = tuple(int(i * ratio) for i in old_size)  # 计算新的图像大小
    img = cv2.resize(img, (new_size[1], new_size[0]))  # 调整图像大小

    pad_w = target_size[1] - new_size[1]  # 计算宽度填充
    pad_h = target_size[0] - new_size[0]  # 计算高度填充
    top, bottom = pad_h // 2, pad_h - (pad_h // 2)
    left, right = pad_w // 2, pad_w - (pad_w // 2)

    img_new = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=(255,255,255))  # 边缘填充
    return img_new
if __name__ == "__main__":
    path_root = "D:/dataset/img_list/lichee/"

    text_prompt = "lichee"

    path_s = "datas/{}/".format("lichee")

    if not os.path.exists(path_s): # 如果文件夹不存在
        os.mkdir(path_s) # 生成文件夹

    loc_time = time.localtime()
    str_time = time.strftime("%Y-%m-%d-%H-%M-%S", loc_time)
    save_name = "{}_{}".format(text_prompt,str_time)
    video_writer = None
    s_idx = 0
    for f_ in os.listdir(path_root):
        image_path = path_root + f_
        img_ = cv2.imread(image_path)

        img_cv = resize_img_keep_ratio(img_, [720,720])
        cv2.namedWindow("img",0)
        cv2.imshow("img",img_cv)
        key_id = cv2.waitKey(0)

        if key_id == 27:
            break
        if key_id == ord("a"):

            # box_xml
            s_idx += 1
            print("----------------------------->> s_idx:",s_idx)
            ss_name  = "{:05d}.jpg".format(s_idx)
            shutil.copyfile(image_path,path_s + str_time+"_"+ss_name)

            if video_writer is None:
                video_writer = cv2.VideoWriter("./demo/{}.mp4".format(save_name), cv2.VideoWriter_fourcc(*"mp4v"), fps=1, frameSize=(img_cv.shape[1],img_cv.shape[0]))
            video_writer.write(img_cv)
            os.remove(image_path)
    video_writer.release()
相关推荐
Gitpchy9 分钟前
Day 23 机器学习管道 pipeline
python·机器学习
程序员小远12 分钟前
使用Jmeter进行http接口测试
自动化测试·软件测试·python·测试工具·jmeter·http·接口测试
mit6.82418 分钟前
[sam2图像分割] 视频追踪API | VideoPredictor | `inference_state`记忆
人工智能·计算机视觉·音视频
TechNomad1 小时前
十七、OpenCV中HighGUI模块的介绍和使用
opencv
B站_计算机毕业设计之家1 小时前
spark实战:python股票数据分析可视化系统 Flask框架 金融数据分析 Echarts可视化 大数据技术 ✅
大数据·爬虫·python·金融·数据分析·spark·股票
疯笔码良1 小时前
【IOS开发】SwiftUI + OpenCV实现图片的简单处理(一)
opencv·ios·swiftui
864记忆1 小时前
opencv图像预处理函数的功能与作用
人工智能·opencv·计算机视觉
碧海银沙音频科技研究院2 小时前
DiVE长尾识别的虚拟实例蒸馏方法
arm开发·人工智能·深度学习·算法·音视频
AI浩2 小时前
基于多焦点高斯邻域注意力机制与大规模基准的视频人群定位
人工智能·深度学习·音视频
开发者导航2 小时前
【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent
人工智能·音视频