Spaces:
No application file
No application file
eddygiusepe
commited on
Commit
·
a84ed97
1
Parent(s):
138a175
OpenCV com vídeo
Browse files
5_Read_and_Display_Videos_Using_OpenCV.py
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro
|
| 3 |
+
|
| 4 |
+
Link de estudo:
|
| 5 |
+
|
| 6 |
+
* https://machinelearningmastery.com/how-to-read-and-display-videos-using-opencv/?utm_source=drip&utm_medium=email&utm_campaign=A+gentle+introduction+to+OpenCV&utm_content=A+gentle+introduction+to+OpenCV
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
Como um vídeo é formulado
|
| 10 |
+
=========================
|
| 11 |
+
|
| 12 |
+
Ao descrever o vídeo digital adicionaremos uma dimensão extra, t , que denota tempo. A razão para
|
| 13 |
+
fazer isso é que o vídeo digital é, na verdade, composto de imagens digitais que são exibidas
|
| 14 |
+
sequencialmente em rápida sucessão ao longo de um período de tempo. No contexto do vídeo, nos
|
| 15 |
+
referiremos a essas imagens como IMAGE FRAMES. A taxa na qual os quadros são exibidos em sucessão
|
| 16 |
+
é chamada de FRAME RATE e é medida em frames por segundo, ou FPS, em resumo.
|
| 17 |
+
"""
|
| 18 |
+
# Lendo e exibindo quadros de imagem de uma câmera
|
| 19 |
+
from cv2 import VideoCapture
|
| 20 |
+
|
| 21 |
+
capture = VideoCapture(0)
|
| 22 |
+
|
| 23 |
+
# seria sensato verificar se uma conexão com a câmera foi estabelecida com sucesso
|
| 24 |
+
if not capture.isOpened():
|
| 25 |
+
print("Erro ao estabelecer conexão")
|
| 26 |
+
else:
|
| 27 |
+
print("Conexão com sucesso 🤗")
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
# O seguinte método retorna o próximo quadro de imagem em frame, junto com um valor booleano 'ret' que indica
|
| 31 |
+
# True se um quadro de imagem foi capturado com sucesso ou, inversamente, False se o método retornou uma imagem vazia.
|
| 32 |
+
ret, frame = capture.read()
|
| 33 |
+
print(ret)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
from cv2 import imshow
|
| 38 |
+
if ret:
|
| 39 |
+
imshow('Exibindo frames de imagem de uma webcam', frame)
|
| 40 |
+
|
| 41 |
+
# 🚨NOTA🚨:
|
| 42 |
+
# Tenha sempre em mente que ao trabalhar com OpenCV, cada quadro da imagem é lido no formato de cores 🧐 BGR 🧐.
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
from cv2 import VideoCapture, imshow, waitKey, destroyAllWindows
|
| 46 |
+
# Criar objeto de captura de vídeo:
|
| 47 |
+
capture = VideoCapture(0)
|
| 48 |
+
|
| 49 |
+
# Verifique se uma conexão de câmera foi estabelecida:
|
| 50 |
+
if not capture.isOpened():
|
| 51 |
+
print("Erro ao estabelecer conexão")
|
| 52 |
+
else:
|
| 53 |
+
print("Conexão com sucesso 🤗")
|
| 54 |
+
|
| 55 |
+
capture = VideoCapture(0) # Eu acrescentei esta Linha para que o seguinte LOPP funcione.
|
| 56 |
+
while capture.isOpened():
|
| 57 |
+
# Ler um Frame de imagem:
|
| 58 |
+
ret, frame = capture.read()
|
| 59 |
+
# Se um Frame de imagem foi capturado, exiba-o:
|
| 60 |
+
if ret:
|
| 61 |
+
imshow('Exibindo Frames de imagem de uma webcam', frame)
|
| 62 |
+
# Se a tecla Esc for pressionada, encerre o loop while:
|
| 63 |
+
if waitKey(25) == 27:
|
| 64 |
+
break
|
| 65 |
+
# Liberar a captura de vídeo e fechar a janela de exibição:
|
| 66 |
+
capture.release()
|
| 67 |
+
destroyAllWindows()
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
|
| 71 |
+
"""
|
| 72 |
+
Lendo e exibindo quadros de imagem de um arquivo de vídeo
|
| 73 |
+
=========================================================
|
| 74 |
+
"""
|
| 75 |
+
# capture = VideoCapture('Videos/Iceland.mp4')
|
| 76 |
+
# # Também é possível obter diversas propriedades do objeto capturado, como largura e altura dos quadros da imagem, bem como a taxa de quadros:
|
| 77 |
+
# from cv2 import CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT, CAP_PROP_FPS
|
| 78 |
+
|
| 79 |
+
# # Posso ver pelas propriedades de vídeo exibidas em minha unidade local que o vídeo é composto de frames de
|
| 80 |
+
# # imagem com dimensões de 1280 x 720 pixels e que é executado a uma taxa de frames de 25 fps.
|
| 81 |
+
# frame_width = capture.get(CAP_PROP_FRAME_WIDTH)
|
| 82 |
+
# frame_height = capture.get(CAP_PROP_FRAME_HEIGHT)
|
| 83 |
+
# fps = capture.get(CAP_PROP_FPS)
|
| 84 |
+
|
| 85 |
+
# print(frame_width)
|
| 86 |
+
# print(frame_height)
|
| 87 |
+
# print(fps)
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
from cv2 import (VideoCapture, imshow, waitKey, destroyAllWindows,
|
| 92 |
+
CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT, CAP_PROP_FPS)
|
| 93 |
+
|
| 94 |
+
# Create video capture object
|
| 95 |
+
capture = VideoCapture('Videos/Iceland2.mp4') # Baixar vídeo de graça --> https://www.videvo.net/video/aerial-view-of-gullfoss-waterfall/452782/#rs=video-box
|
| 96 |
+
|
| 97 |
+
# Verifique se uma conexão de câmera foi estabelecida:
|
| 98 |
+
if not capture.isOpened():
|
| 99 |
+
print("Erro ao abrir arquivo de vídeo")
|
| 100 |
+
|
| 101 |
+
else:
|
| 102 |
+
# Get video properties and print them
|
| 103 |
+
frame_width = capture.get(CAP_PROP_FRAME_WIDTH)
|
| 104 |
+
frame_height = capture.get(CAP_PROP_FRAME_HEIGHT)
|
| 105 |
+
fps = capture.get(CAP_PROP_FPS)
|
| 106 |
+
|
| 107 |
+
print("Image frame width: ", int(frame_width))
|
| 108 |
+
print("Image frame height: ", int(frame_height))
|
| 109 |
+
print("Frame rate: ", int(fps))
|
| 110 |
+
|
| 111 |
+
|
| 112 |
+
while capture.isOpened():
|
| 113 |
+
|
| 114 |
+
# Ler um Frame de imagem:
|
| 115 |
+
ret, frame = capture.read()
|
| 116 |
+
|
| 117 |
+
# Se um frame de imagem foi capturado, exiba-o:
|
| 118 |
+
if ret:
|
| 119 |
+
imshow('Exibindo frames de imagem de arquivo de vídeo', frame)
|
| 120 |
+
|
| 121 |
+
# Se a tecla Esc for pressionada, encerre o loop while:
|
| 122 |
+
if waitKey(25) == 27:
|
| 123 |
+
break
|
| 124 |
+
|
| 125 |
+
# Liberar a captura de vídeo e fechar a janela de exibição:
|
| 126 |
+
capture.release()
|
| 127 |
+
destroyAllWindows()
|