项目:散兵与雷神(一) 动态主界面(准备)

图片集

        万物离不开实践, 让我们的实践从这个简单的项目开始吧。

        一、准备

                (1)配置要求:python(如果愿意打很长的代码, c++也可以), 剪映(类似软件即可), 一个视频;(建议下载一个Python编译器,当然可以不下,用python自带的IDLE即可(毕竟不是做python项目))

                视频:任意, 时间不要太长。

                Python官网

                剪映官网

                pycharm(我推荐的python编译器)

                (2)获取视频声音 (剪映)

如视频所示:

提取声音

         

                (3)获取视频图片集(python)

                1、创建虚拟空间,如图所示:

                

                2、下载安装包,代码如下:(终端)

python -m pip install --upgrade pip
pip install numpy -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install opencv-python -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install pygame -i https://pypi.mirrors.ustc.edu.cn/simple/

                3、再下载auto-py-to-exe(打包)

pip install auto-py-to-exe -i https://pypi.mirrors.ustc.edu.cn/simple/

                4、写下代码:

from os import system
from cv2 import VideoCapture, imencode
from tkinter import Tk, Frame, Button
from tkinter.filedialog import askopenfilename, askdirectory

def start():
    global flag
    flag = False

def change():
    global flag
    flag = not flag

def video_load():
    global  video_path
    file_path = askopenfilename(title="选择一个视频", filetypes=[("MP4文件", "mp4")], initialdir='./')
    video_path = file_path

def directory_load():
    global directory_path
    file_path = askdirectory(title="选择保存的文件夹")
    directory_path = file_path

def video_to_images():
    # 打开视频文件
    global directory_path
    global video_path
    global flag

    try:
        video = VideoCapture(video_path)
    except FileNotFoundError:
        print("无法打开视频文件")
        return

    # 确保视频文件被成功打开
    if not video.isOpened():
        print("无法打开视频文件")
        return

    # 初始化帧计数器
    frame_count = 0

    while True:
        # 读取视频的一帧
        ret, frame = video.read()

        # 如果未成功读取帧,则退出循环
        if not ret:
            break

        # 保存帧为图像文件
        image_path = directory_path + "/frame_" + str(frame_count) + ".jpg"
        imencode('.jpg', frame)[1].tofile(image_path)  # 保存图片
        if flag:
            system(image_path)

        # 增加帧计数器
        frame_count += 1

        print("目前转换了", frame_count, "帧图像")
    # 释放视频对象
    video.release()
    print("视频转换完成!共转换了", frame_count, "帧图像")

def window():
    win = Tk()
    frame = Frame(win)
    btnVload = Button(frame, text="导入视频", font=("微软雅黑", 40, "bold"), command=video_load)
    btnDload = Button(frame, text="导出视频", font=("微软雅黑", 40, "bold"), command=directory_load)
    btnchange = Button(frame, text="开始转换", font=("微软雅黑", 40, "bold"), command=video_to_images)
    btnmake_sure = Button(frame, text="转换时检查", font=("微软雅黑", 40, "bold"), command=change)
    start()
    frame.pack()
    btnVload.pack()
    btnDload.pack()
    btnchange.pack()
    btnmake_sure.pack()
    return win

if __name__ == '__main__':
    win = window()
    win.mainloop()

                5、打包

在终端输入:

auto-py-to-exe

回车

页面如下:

将页面修改,如下:

点击“Browse”, 选择python文件。

选择“One File”

点击 Convert .PY TO .EXE

 如图:

打包完成后,页面如下:

 

点击 OPEN OUTPUT FOLDER

如图:

打开.exe文件

如图:

 

 点击导入视频, 选择你的视频的位置。

点击导出视频, 选择导出图片的位置。

最后点击开始转换。

如视频所示:

图片集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值