Arquivo app.py
O app.py
é uma aplicação gráfica baseada na biblioteca PyQt5 que permite selecionar um arquivo de imagem ou vídeo e executar a detecção de objetos nele. O algoritmo de detecção de objetos utilizado é o YOLOv5, que é executado por meio da chamada do arquivo detect.py
na pasta yolov5
.
A aplicação gráfica apresenta uma barra de progresso e duas labels que são atualizadas durante a execução do processo. A primeira label informa o nome do arquivo selecionado e a segunda informa quando a imagem é detectada com sucesso. O código também inclui funções que realizam a cópia do arquivo selecionado para a pasta de entrada do algoritmo de detecção de objetos, a junção dos arquivos de saída do YOLOv5 (caso o processamento tenha gerado arquivos divididos), bem como a função de iniciar o processo de detecção.
Bibliotecas necessárias
sys
para acessar variáveis e funções específicas do sistema;os
para interagir com o sistema operacional;shutil
para integrar com o sistema operacional (por exemplo, criar e manipular arquivos e pastas);PyQt5
para criar janelas e widgets.QApplication
é a classe principal para gerenciar a aplicação;QWidget
é a classe base para todos os widgets em PyQt5;QFileDialog
é usada para abrir caixas de diálogo para selecionar arquivos e pastas;QPushButton
é um botão que pode ser clicado para executar uma ação;QProgressBar
é uma barra de progresso que mostra o progresso de uma tarefa;QLabel
é um rótulo que pode exibir texto e imagens;PyQt5.QtGui
importa a classeQPixmap
do PyQt5, que é usada para carregar imagens.
App
Bases: QWidget
A classe App
é uma subclasse da classe QWidget
e é responsável por construir a interface gráfica do usuário para o programa FireVision 0.1.0.
Source code in firevision/app.py
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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
|
LoadWindow()
O método LoadWindow()
define a janela, incluindo o título, dimensões e widgets. Ele cria um botão "Selecionar Arquivo" e uma barra de progresso que serão usados posteriormente.
Source code in firevision/app.py
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 |
|
OpenFileDialog()
O método OpenFileDialog()
é chamado quando o botão "Selecionar Arquivo" é clicado. Ele usa o método join_files()
para juntar os arquivos de saída gerados pelo modelo YOLOv5. Em seguida, ele abre um diálogo de seleção de arquivo para que o usuário possa escolher um arquivo de imagem. Ele atualiza a barra de progresso usando o método progressLoad()
e copia o arquivo selecionado para uma pasta específica. Ele, então, executa o modelo YOLOv5 no arquivo de imagem selecionado usando o método os.system()
. Finalmente, ele atualiza a barra de progresso novamente e define o texto de uma label para indicar que a imagem foi detectada com sucesso.
Source code in firevision/app.py
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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
|
__init__()
O método __init__()
é um método especial que é executado quando um objeto da classe App
é criado. Neste caso, ele define as dimensões da janela e chama o método LoadWindow()
para criar a interface gráfica.
Source code in firevision/app.py
22 23 24 25 26 27 28 29 30 31 32 |
|
join_files(input_filename, output_filename)
O método join_files()
recebe dois parâmetros: input_filename
e output_filename
. Ele é responsável por juntar os arquivos de saída gerados pelo modelo de detecção de objeto YOLOv5 em um único arquivo. Esse método é chamado pelo método OpenFileDialog()
.
Source code in firevision/app.py
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
|
progressLoad()
O método progressLoad()
é responsável por atualizar o valor da barra de progresso.
Source code in firevision/app.py
92 93 94 95 96 97 |
|
setLabel()
O método setLabel()
define o texto de uma label da interface gráfica como "Imagem detectada com sucesso".
Source code in firevision/app.py
99 100 101 102 103 |
|
start_process()
O método start_process()
é responsável por definir a barra de progresso com um valor máximo de 100 e atualizar o valor da barra de progresso enquanto o programa está executando.
Source code in firevision/app.py
81 82 83 84 85 86 87 88 89 90 |
|