OpenCV——视频抽帧

# 导入所有必要的库
import cv2
import os

# 传入视频的名字,xxx.mp4
from tqdm import tqdm

def from_viedo_get_frame(video_name):
    # 路径定义
    pwd_dir=r"D:\desk\test_django\test\Videos\IR"
    video_dir=os.path.join(pwd_dir,"Videos")
    cut_images_dir=os.path.join(pwd_dir,"Cut_Images")
    # 保存图片名字
    img_name=video_name.split(".")[0]
    save_img_dir_p=os.path.join(cut_images_dir,img_name)
    save_img_dir=os.path.join(save_img_dir_p,"imgs")
    save_label_dir=os.path.join(save_img_dir_p,"labels")


    # 指定的路径读取视频
    cam = cv2.VideoCapture(os.path.join(video_dir,video_name))
    # 创建名为data的文件夹

    try:
        if not os.path.exists(save_img_dir):
            os.makedirs(save_img_dir)
        if not os.path.exists(save_label_dir):
            os.makedirs(save_label_dir)


    # 如果未创建,则引发错误
    except OSError:
        print('Error: Creating directory of data')

    # frame
    currentframe = 0

    while (True):

        # reading from frame
        ret, frame = cam.read()

        if ret:
            # 如果视频仍然存在,继续创建图像
            save_img_path=os.path.join(save_img_dir,"{}_{}.jpg".format(str(img_name),str(currentframe)))

            # 增加计数器,以便显示创建了多少帧
            currentframe += 1

            # 自定义隔多少帧抽一帧
            if currentframe % 1==0:
                # 写入提取的图像
                cv2.imwrite(save_img_path, frame)

        else:
            break
    # 一旦完成释放所有的空间和窗口
    cam.release()
    cv2.destroyAllWindows()
    
if __name__ == '__main__':
    # 需要被抽帧的视频
    video_list=["fushi_30_1.mp4","fushi_30_2.mp4","fushi_30_3.mp4","yangshi_30_1.mp4", "yuan2jing_1"]

    for video in tqdm(video_list):
        video_name=f"{video}.mp4"
        from_viedo_get_frame(video_name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞飞飞飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值