Python QT Opencv
Python QT Opencv
Data: fevereiro/2022
Neste material apresentamos uma solução para usar OpenCV e Qt com linguagem Python .
Usaremos como estudo de caso a apresentação da webcam numa GUI com Qt .
OpenCV e Qt são bibliotecas famosas, maduras, com inúmeros usuários, mantidos por grandes
empresas, com ampla documentação e binding para linguagem Python . Cada uma delas tem sua
linha de atuação própria, enquanto Qt é usada principalmente para construir interfaces gráficas (GUI -
Graphic User Interface), OpenCV é usada para realizar processamento de imagem e vídeo. Ambas
possuem a API original em linguagem compilada, a primeira API de OpenCV foi desenvolvida para
linguagem C enquanto que a de Qt , em C++ .
Existe mais de um binding do Qt para a linguagem Python . Neste tutorial iremos explorar o PyQt5 .
Uma alternativa ao PyQt é o PySide , desenvolvido e mantido pela própria corporação qeu mantém
o Qt . Quanto ao OpenCV há apenas um binding, que é mantido pela organização que também
mantém o OpenCV .
Neste tutorial não iremos abordar o processo de instalação de nenhuma das bibliotecas. Contamos
que, para que este exemplo possa ser reproduzido, você tenha instalado em sua máquina o
Qt Designer e os módulos PyQt e OpenCV da sua distribuição Python . Neste exemplo usamos a
distribuição Anaconda.
leonardo@pangeia: python
>>>
Para construir a janela principal, uma janela que possa iniciar o processamento do laço de eventos, é
preciso escolher a opção Main Window . Caso já exista uma janela principal e esta seja uma
adicional, você pode escolher outra opção.
class Ui_MainWindow(object):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(600, 400)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
import sys
self.setupUi(self)
self.setWindowTitle("Box Filter")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
A aplicação tem um texto na barra de títulos e ajusta automaticamente a disposição dos wigets
quando sua dimensão é alterada pelo usuário. Entretanto não tem nenhuma funcionalidade.
self.setupUi (self)
self.timer = QTimer()
self.timer.timeout.connect (self.processar_frame)
self.timer.start (50)
def processar_frame(self):
self.label.setPixmap (pixmap)
h, w, ch = rgb_image.shape
bytes_per_line = ch * w
window = MainWindow ()
window.show()
app.exec()
Fontes de consulta
1.https://www.imagetracking.org.uk/2020/12/displaying-opencv-images-in-pyqt/
2.https://www.pythonguis.com/pyqt5-tutorial/