Как извлечь одно изображение из видео каждые 30 секунд с помощью python с opencv? [Дубликат]

Linq to XML.

Кроме того, VB.NET имеет гораздо лучшую поддержку синтаксического анализа xml через компилятор, чем C #. Если у вас есть опция и желание, проверьте это.

6
задан jonrsharpe 15 December 2014 в 11:32
поделиться

3 ответа

почему бы вам просто не сделать, что предложил @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()                    
9
ответ дан berak 15 August 2018 в 17:28
поделиться
  • 1
    Спасибо, теперь я понял. Также мы должны использовать vidcap.set (0,20000) вместо CAP_PROP_POS_MSEC – venpo045 15 December 2014 в 20:28
  • 2
    ^^ ах, извините, попробовал 3.0, где константы более схожи. вероятно, cv2.cv.CAP_PROP_POS_MSEC с opencv2.4 – berak 15 December 2014 в 20:33
  • 3
    Не работал для меня – JonathanMitchell 16 March 2017 в 22:31
import cv2

cap = cv2.VideoCapture('bunny.mp4')
cap.set(cv2.CAP_PROP_POS_MSEC,1000)      # Go to the 1 sec. position
ret,frame = cap.read()                   # Retrieves the frame at the specified second
cv2.imwrite("image.jpg", frame)          # Saves the frame as an image
cv2.imshow("Frame Name",frame)           # Displays the frame on screen
cv2.waitKey()                            # Waits For Input

Здесь cap.set (cv2.CAP_PROP_POS_MSEC, 1000) отвечает за прохождение непосредственно к 1-й секунде в видео (1000-й миллисекунды). Не стесняйтесь подставлять значение по вашему выбору.

Я проверил код на OpenCV 3.1.0.

0
ответ дан John 15 August 2018 в 17:28
поделиться
# Import the necessary packages
import cv2

vidcap = cv2.VideoCapture('Wildlife.mp4')
success,image = vidcap.read()
print success
#cv2.imwrite("frame.jpg", image) 

count = 0
framerate = vidcap.get(5)
print "framerate:", framerate
framecount = vidcap.get(7)
print "framecount:", framecount
vidcap.set(5,1)
newframerate = vidcap.get(5)
print "newframerate:", newframerate  

while success:
  success,image = vidcap.read()
  #cv2.imwrite("frame%d.jpg" % count, image) 

  getvalue = vidcap.get(0)
  print getvalue
  if getvalue == 20000:
    cv2.imwrite("frame%d.jpg" % getvalue, image)  

  #if cv2.waitKey(10) == 27:                     
      #break
  count += 1

Выход выглядит следующим образом

framerate: 29.97002997
framecount: 901.0
newframerate: 29.97002997

Почему частота кадров не изменяется. Я хочу изменить частоту кадров на 1, чтобы любое значение времени, которое пользователь дает, должен иметь возможность получить изображение кадр.

0
ответ дан venpo045 15 August 2018 в 17:28
поделиться
  • 1
    Как сказал @Micka, чтобы изменить частоту кадров, я попытался установить частоту кадров, но не изменился. – venpo045 15 December 2014 в 15:12
Другие вопросы по тегам:

Похожие вопросы: