Camera streaming
This simple script opens a window which streams the frames from currently connected Vimba camera device.
camera_stream.py
from PySide6.QtCore import QThread, QEventLoop
from PySide6.QtWidgets import QMainWindow
from PySide6.QtMultimediaWidgets import QVideoWidget
from civiq6 import VimbaRunner, VimbaCamera, VimbaCaptureSession
class CameraWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
# start vimba
self._vimbaThread = QThread()
self._vimbaRunner = VimbaRunner()
self._waitVimba = QEventLoop(self)
self._vimbaRunner.moveToThread(self._vimbaThread)
self._vimbaThread.started.connect(self._vimbaRunner.runVimba)
self._vimbaRunner.vimbaReady.connect(self._waitVimba.quit)
self._vimbaThread.start()
self._waitVimba.exec()
self._camera = VimbaCamera()
self._captureSession = VimbaCaptureSession()
self._videoWidget = QVideoWidget()
self._captureSession.setCamera(self._camera)
self._captureSession.setVideoOutput(self._videoWidget)
self.setCentralWidget(self._videoWidget)
def camera(self) -> VimbaCamera:
return self._camera
def closeEvent(self, event):
self._vimbaRunner.stopVimba()
self._vimbaThread.quit()
self._vimbaThread.wait()
super().closeEvent(event)
if __name__ == "__main__":
import vimba # type: ignore[import]
from PySide6.QtWidgets import QApplication
import sys
VIMBA_INST = vimba.Vimba.get_instance()
VIMBA_INST.enable_log(vimba.LOG_CONFIG_INFO_CONSOLE_ONLY)
app = QApplication(sys.argv)
window = CameraWindow()
window.camera().start()
window.show()
app.exec()
app.quit()
from PyQt6.QtCore import QThread, QEventLoop
from PyQt6.QtWidgets import QMainWindow
from PyQt6.QtMultimediaWidgets import QVideoWidget
from civiq6 import VimbaRunner, VimbaCamera, VimbaCaptureSession
class CameraWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
# start vimba
self._vimbaThread = QThread()
self._vimbaRunner = VimbaRunner()
self._waitVimba = QEventLoop(self)
self._vimbaRunner.moveToThread(self._vimbaThread)
self._vimbaThread.started.connect(self._vimbaRunner.runVimba)
self._vimbaRunner.vimbaReady.connect(self._waitVimba.quit)
self._vimbaThread.start()
self._waitVimba.exec()
self._camera = VimbaCamera()
self._captureSession = VimbaCaptureSession()
self._videoWidget = QVideoWidget()
self._captureSession.setCamera(self._camera)
self._captureSession.setVideoOutput(self._videoWidget)
self.setCentralWidget(self._videoWidget)
def camera(self) -> VimbaCamera:
return self._camera
def closeEvent(self, event):
self._vimbaRunner.stopVimba()
self._vimbaThread.quit()
self._vimbaThread.wait()
super().closeEvent(event)
if __name__ == "__main__":
import vimba # type: ignore[import]
from PyQt6.QtWidgets import QApplication
import sys
VIMBA_INST = vimba.Vimba.get_instance()
VIMBA_INST.enable_log(vimba.LOG_CONFIG_INFO_CONSOLE_ONLY)
app = QApplication(sys.argv)
window = CameraWindow()
window.camera().start()
window.show()
app.exec()
app.quit()