使用OpenCV在给定时间从视频中提取图像

ven*_*045 9 python video opencv image computer-vision

我的任务是创建一个可以在几秒钟内拍摄视频和时间的实用程序.

该实用程序应该使用给定的输入从视频中写出jpeg图像.

例如,让视频名称abc.mpeg和时间以20秒为单位提供给工具.该实用程序应该从视频@20秒写出图像.

    # Import the necessary packages
    import argparse
    import cv2

    vidcap = cv2.VideoCapture('Wildlife.mp4')
    success,image = vidcap.read()
    count = 0;
    while success:
      success,image = vidcap.read()
      cv2.imwrite("frame%d.jpg" % count, image)     # save frame as JPEG file
      if cv2.waitKey(10) == 27:                     # exit if Escape is hit
          break
      count += 1
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了整个视频的所有帧,我关心的是如何在指定时间传递时间并获取帧?

ber*_*rak 15

你为什么不这样做,@ micka提出了什么?

import cv2

vidcap = cv2.VideoCapture('d:/video/keep/Le Sang Des Betes.mp4')
vidcap.set(cv2.CAP_PROP_POS_MSEC,20000)      # just cue to 20 sec. position
success,image = vidcap.read()
if success:
    cv2.imwrite("frame20sec.jpg", image)     # save frame as JPEG file
    cv2.imshow("20sec",image)
    cv2.waitKey()                    
Run Code Online (Sandbox Code Playgroud)