Python PDI - Extrair frames de Vídeo

1,220 views
Skip to first unread message

Jean Zenzeluk

unread,
Apr 24, 2014, 2:13:32 PM4/24/14
to python...@googlegroups.com
Opa tudo bom pessoal
Então eu queria saber como extrair frames(imagens) de um vídeo avi, por exemplo a cada 10 segundos extrair um frame.. eu não estou conseguindo encontrar conteúdo relacionado, todos que acho estão ligados a FFmpeg :(
Muito obrigado

Helder

unread,
Apr 25, 2014, 12:20:47 PM4/25/14
to python...@googlegroups.com
já tentou utilizar o OpenCV?


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Att,
Helder C. R. de Oliveira
EESC/Universidade de São Paulo
http://helderc.net

leonardo lontra

unread,
Apr 30, 2014, 5:00:47 PM4/30/14
to python...@googlegroups.com
Usa o python-opencv

é muito facil de manipular:

import cv2.cv as cv
#video player
vidFile = cv.CaptureFromFile( "/home/leonardo/Filmes/0SV1NG.TS.LPark.Lege.rmvb" )

nFrames = int(  cv.GetCaptureProperty( vidFile, cv.CV_CAP_PROP_FRAME_COUNT ) )
fps = cv.GetCaptureProperty( vidFile, cv.CV_CAP_PROP_FPS )
waitPerFrameInMillisec = int( 1/fps * 1000/1 )

print 'Num. Frames = ', nFrames
print 'Frame Rate = ', fps, ' frames per sec'
for f in xrange( nFrames ):
  frameImg = cv.QueryFrame( vidFile )
  cv.ShowImage( "My Video Window",  frameImg )
  cv.WaitKey( waitPerFrameInMillisec  )
cv.DestroyWindow( "My Video Window" ) 

#### Tem como vc usar com o opencv2, ele manipula usando o numpy (Fica bem melhor):

import cv2
camcapture = cv2.VideoCapture('/home/leonardo/Filmes/0SV1NG.TS.LPark.Lege.rmvb')
fps = camcapture.get(cv2.cv.CV_CAP_PROP_FPS)
totalFrames = camcapture.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
res, frame = camcapture.read()

Jean Zenzeluk

unread,
May 6, 2014, 3:03:51 PM5/6/14
to python...@googlegroups.com

Opa, Leonardo da um erro na linha waitPerFrameInMillisec = int( 1/fps * 1000/1 ), eu sou novo em python e Processamento de imagens, você não teria algum exemplo onde retira os frames do vídeo e salva eles em uma pasta??

Jean Zenzeluk

unread,
May 6, 2014, 3:06:50 PM5/6/14
to python...@googlegroups.com
ou talvez voce sabe com o openCV 2 como tirar os frames (igual voce colocou no exemplo) e salva-los? Porque eu fiz igual o seu exemplo com o opencv 2, porém como sou iniciante não consegui salvar as imagens ... e eu executo o código igual do exemplo e nao faz nada ..


Em quarta-feira, 30 de abril de 2014 18h00min47s UTC-3, leonardo lontra escreveu:

leonardo lontra

unread,
May 8, 2014, 7:55:43 AM5/8/14
to python...@googlegroups.com
Claro, vou fazer um exemplo mais simples:


import cv2

VIDEO = 'video.mp4'

cap = cv2.VideoCapture(VIDEO)
x = 0
while cap.isOpened():
   res, frame = cap.read()
   nomeDoFrame = 'frame-%d.jpg' % x
   cv2.imwrite(nomeDoFrame,frame)

cap.release()

=====

Nesse exemplo, os frames vão ser salvos como frame-1.jpg,frame-2.jpg ...

Para trocar so mudar o nome na variavel nomeDoframe. Lembrando que precisa colocar o caminho do video na variavel VIDEO

Qualquer coisa, so chamar

Abraços





On Thursday, April 24, 2014 3:13:32 PM UTC-3, Jean Zenzeluk wrote:
Reply all
Reply to author
Forward
0 new messages