-
Notifications
You must be signed in to change notification settings - Fork 0
/
AnimalView.py
executable file
·136 lines (109 loc) · 4.74 KB
/
AnimalView.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import cv2
from urllib import request
import numpy as np
from random import randint
import os # Chamadas de sistema para apagar arquivos temporários
import shutil # Pacote responsável por criar cópia de arquivos de video
class AnimalView(object):
@staticmethod
def view_photo(image):
"""[Resumo]
Função responsável por receber imagem decodificada e exibir na tela.
Além disso, monitora os botões clicados enquanto a mídia é exibida e
redimensiona fotos grandes para ser visível na tela.
Args:
image (cv2.image): Imagem propriamente decodificada.
"""
height = image.shape[0]
width = image.shape[1]
original_img = image
# Onde foi obitida a loǵica da proporção
# https://www.tutorialkart.com/opencv/python/opencv-python-resize-image/
scale_percent = 90 # percent of original size
while (True):
if (height > 1080) or (width > 1920):
width = int(width * scale_percent / 100)
height = int(height * scale_percent / 100)
else:
break
dim = (width, height)
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
cv2.imshow("Foto do animal", image)
#cv2.moveWindow("Foto do animal", 560, 280)
while 1:
tecla = cv2.waitKey(33)
if tecla == 27: # Esc pressionado
exit(0)
elif tecla == -1: # Nada pressionado
continue
# Salva frame original da imagem na pasta 'saved_photos'
elif tecla == 115: # letra 's' pressionada
num = randint(0, 10000)
fileName = 'saved_photos/image' + str(num) + '.jpg'
cv2.imwrite(fileName, original_img)
else: # Qualquer outra tecla
cv2.destroyWindow("Foto do animal")
cv2.destroyAllWindows()
break
@staticmethod
def view_video(nome_video):
"""[Resumo]
Função responsável por abrir vídeo temporário na própria pasta e
exibir em loop na tela do OpenCV. Além disso, trata as entradas e teclas
para realizar as operações de navegação da aplicação.
Args:
nome_video (str): Nome da string do vídeo temporário gerado Depois da requisição.
"""
cap = cv2.VideoCapture(nome_video)
if (cap.isOpened()== False):
print("Erro ao abrir vídeo!")
while(cap.isOpened()):
# Capture frame-by-frame
ret, frame = cap.read()
if ret == True:
# Display the resulting frame
cv2.imshow('Video del catiorro', frame)
tecla = cv2.waitKey(33)
if tecla == 27: # Esc pressionado
cap.release()
cv2.destroyWindow('Video del catiorro')
cv2.destroyAllWindows()
try:
os.remove('video_temp.mp4')
os.remove('video_temp.webm')
except:
pass
exit(0)
elif tecla == 115: # letra 's' pressionada
num = randint(0, 10000)
fileNameMp4 = 'video_temp.mp4'
fileNameWebm = 'video_temp.webm'
fileNameTargetMp4 = 'saved_videos/video' + str(num) + '.mp4'
fileNameTargetWebm = 'saved_videos/video' + str(num) + '.webm'
# Copia o vídeo para a pasta 'saved_videos'
try:
shutil.copyfile(fileNameMp4, 'saved_videos/' + fileNameMp4)
shutil.copyfile(fileNameWebm, 'saved_videos/' + fileNameWebm)
except:
pass
try:
os.rename('saved_videos/' + fileNameMp4, fileNameTargetMp4)
os.rename('saved_videos/' + fileNameWebm, fileNameTargetWebm)
except:
pass
elif tecla == -1:
continue
else:
cap.release()
cv2.destroyWindow('Video del catiorro')
cv2.destroyAllWindows()
try:
os.remove('video_temp.mp4')
os.remove('video_temp.webm')
except:
pass
break
# Break the loop
else:
cap.release()
cap = cv2.VideoCapture(nome_video)