视频按帧截取 python程序

视频按帧截取 python程序

  • 代码注释很清晰,请自行阅读,
  • 参考部分网络资源,由于较难追溯,不记出处。
import cv2 as cv
import os

# 视频路径
video_path = "/home/username/Videos/file.mp4"

cap = cv.VideoCapture(video_path)
frameRate = 5  # 帧数截取间隔

# 保存路径
aim_path = "./capture_image/"
if not os.path.exists(aim_path):
    os.mkdir(aim_path)

fCount = 0  # 计数器
while (True):
    ret, frame = cap.read()
    fCount += 1
    if ret:
        if (fCount % frameRate == 0):
            # 这里就可以做一些操作了:显示截取的帧图片、保存截取帧到本地
            cv.imshow("frame", frame)
            # 延时ms,默认值为0,此时需要按键继续。
            cv.waitKey(100)
            key = cv.waitKey()
            # n键 下一张
            if key == ord("n"):
                cv.destroyAllWindows()
                continue
            # Esc 退出
            elif key == 27:
                cv.destroyAllWindows()
                break
            # space 保存当前帧
            elif key == 32:
                cv.destroyAllWindows()
                print("开始截取视频第:" + str(fCount) + " 帧")
                cv.imwrite(aim_path + str("210925%05d" %
                           fCount) + '.jpg', frame)
                print("Save this frame!")
            # other键 下一张并提示
            else:
                print("Retype please!")
                cv.destroyAllWindows()

    else:
        print("已无帧可存。")
        break
cap.release()

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用OpenCV库来实现python视频截图。 以下是一个简单的示例代码: ```python import cv2 # 读取视频文件 cap = cv2.VideoCapture('video.mp4') # 设置计数器 frame_count = 0 # 循环读取视频 while cap.isOpened(): # 读取一 ret, frame = cap.read() # 如果成功读取到了 if ret: # 保存截图 cv2.imwrite('frame{:d}.jpg'.format(frame_count), frame) frame_count += 1 else: break # 释放资源 cap.release() ``` 在上面的代码中,我们首先使用`cv2.VideoCapture`函数读取视频文件。然后,我们使用一个循环来逐读取视频,每读取一就保存一张截图。最后,我们释放资源,结束程序。 要使用该程序,只需将视频文件名替换为您想要截图的视频文件的名称,并在命令行中运行该程序。该程序截取视频的每一,并将其保存为JPEG图像文件,文件名将以“frame”开头,后跟计数器的当前值。 ### 回答2: 在Python中,可以使用OpenCV库来逐截取视频。首先,我们需要导入OpenCV库。 ```python import cv2 ``` 然后,我们需要加载视频文件,并创建一个VideoCapture对象。 ```python video_path = 'video.mp4' # 视频文件路径 cap = cv2.VideoCapture(video_path) ``` 接下来,我们可以使用while循环来遍历视频中的每一,并执行所需的操作。循环将在遇到视频的末尾或按下'q'键时停止。 ```python while cap.isOpened(): ret, frame = cap.read() # 读取视频的下一 if not ret: break # 在这里添加你要执行的操作,比如保存当前为图像文件 # 例如,保存为jpg文件 cv2.imwrite('frame.jpg', frame) cv2.imshow('Frame', frame) # 显示当前 if cv2.waitKey(1) & 0xFF == ord('q'): # 按下'q'键退出 break cap.release() # 释放资源 cv2.destroyAllWindows() # 关闭窗口 ``` 在上述示例中,我们首先使用cap.read()函数读取视频文件的下一,并将返回的结果存储在变量frame中。如果ret为True,则表示成功读取,并且我们可以对该进行操作。在这个例子中,我们将当前保存为一个图像文件(frame.jpg)。 然后,我们使用cv2.imshow()函数显示当前。如果我们按下'q'键,循环将停止,并释放资源以及关闭窗口。 请注意,以上示例仅截取视频的第一,并将其保存为图像文件。您可以根据您的需求来决定如何处理每一。例如,您可以将每一保存为图像文件,或者进行其他一些图像处理操作。 ### 回答3: 在Python中,我们可以使用OpenCV库来逐截取视频。首先,我们需要安装OpenCV库,可以通过以下命令来安装: ``` pip install opencv-python ``` 安装完成后,我们可以使用下面的代码来实现逐截图: ```python import cv2 # 打开视频文件 video = cv2.VideoCapture('video.mp4') # 循环遍历每一 while video.isOpened(): # 读取当前 ret, frame = video.read() # 如果成功读取到 if ret: # 在窗口中显示当前 cv2.imshow('Frame', frame) # 将当前保存为图像文件 cv2.imwrite('frame.jpg', frame) # 按下 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break else: break # 释放资源 video.release() cv2.destroyAllWindows() ``` 在上述代码中,我们首先打开视频文件(可以是本地文件或者网络流),然后通过循环逐读取视频。对于每一,我们可以通过`imshow`函数在窗口中显示当前,并使用`imwrite`函数将当前保存为图像文件(在这个例子中是`frame.jpg`)。按下键盘上的 'q' 键可以退出循环。最后,我们需要释放资源和关闭窗口。 这样,我们就可以使用Python视频进行逐截图了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值