Nos últimos tutoriais vimos como trabalhar com imagens e com captura de imagens vindas da webcam, hoje cobriremos a reprodução de vídeos.
Para reproduzir videos usaremos o objeto VideoCapture o mesmo utilizado para exibir os frames vindos da camera. Observe o exemplo abaixo e logo após veremos o que está acontecendo:
| main.cpp | |
| // Bibliotecas necessarias do opencv | |
| #include "opencv2/core/core.hpp" | |
| #include "opencv2/highgui/highgui.hpp" | |
| using namespace std; | |
| using namespace cv; | |
| int main(int argc, const char** argv) | |
| { | |
| VideoCapture cap; //endereço do video | |
| cap.open("suicidesquad.mp4"); | |
| //criacao da janela | |
| namedWindow("Video", 1); | |
| //reproduzindo o video | |
| for(;;) | |
| { | |
| Mat frame; | |
| cap >> frame; //pega um novo frame do video //exibe o frame | |
| imshow("Video", frame); | |
| if(waitKey(30) >= 0) break; | |
| } | |
| // Libera o espaço alocado pelo VideoCapture | |
| cap.release(); | |
| return 0; | |
| } |
Entendendo o Código
A primeira coisa que precisamos fazer é incluir as bibliotecas necessárias para o projeto, utilizamos a biblioteca gráfica para trabalhar com janelas highgui e incluimos a biblioteca padrão do opencv core:
| //Bibliotecas do opencv #include "opencv2/core/core.hpp" | |
| #include "opencv2/highgui/highgui.hpp" |
Logo após criarmos o objeto, precisamos indicar qual é o caminho do video que desejamos reproduzir, para isso utilizamos o método open("caminho do video") , caso deseje verificar se foi possivel encontrar ou abrir o arquivo informado poderia utilizar cap.isOpened(), que retorna true ou false.
| VideoCapture cap; cap.open("suicidesquad.mp4"); |
O proximo passo é exibir os frames vindos do video, para isso, criamos uma janela com a função namedWindow, e a partir do nosso loop infinito, recebemos cada frame do video com o operador >>, por fim exibimos o frame com a função imshow. Com a função waitKey(30), aguardamos 30 milisegundos para verificar se o usuário deseja encerrar a aplicação apertando qualquer tecla.
| //criacao da janela namedWindow("Video", 1); | |
| //reproduzindo o video | |
| for(;;) | |
| { | |
| Mat frame; | |
| cap >> frame; //pega um novo frame do video //exibe o frame | |
| imshow("Video", frame); | |
| if(waitKey(30) >= 0) break; | |
| } | |
| // Libera o espaço alocado pelo VideoCapture | |
| cap.release(); | |
| return 0; |
Agora precisamos criar um arquivo cmake e indicar nossas dependências para compilarmos nosso programa. Crie um arquivo chamado CMakeLists.txt, em seguida adicione o seguinte código:
| cmake_minimum_required (VERSION 2.6) cmake_policy(SET CMP0012 NEW) | |
| PROJECT(read_video) | |
| # Requires OpenCV | |
| FIND_PACKAGE( OpenCV REQUIRED ) | |
| MESSAGE("OpenCV version : ${OpenCV_VERSION}") | |
| include_directories(${OpenCV_INCLUDE_DIRS}) | |
| link_directories(${OpenCV_LIB_DIR}) | |
| ADD_EXECUTABLE( read_video main.cpp ) | |
| TARGET_LINK_LIBRARIES( read_video ${OpenCV_LIBS} ) |
Compilando e Rodando
- Crie uma pasta chamada read_video em opencv-3.0.0/apps.
- Copie os arquivos main.cpp e CMakeLists.txt que criamos acima para a pasta read_video junto com o video que deseja exibir.
- Com a pasta read_video aberta no terminal digite cmake . e logo após make para gerar nosso executável.
- Por último digite ./read_video
Voce verá uma janela que exibirá o video escolhido em RGB, como o exemplo a seguir:
Baseado em: OpenCv By Example
Código fonte: read_video
Até a próxima!



0 comentários:
Postar um comentário