
Im folgenden Python-Code habe ich openCV verwendet, um eine Kameraverbindung herzustellen, und versucht, den Kamera-Feed in der Grafikansicht anzuzeigen:
Code: Select all
# Source - https://stackoverflow.com/q/79859672
# Posted by Marwa Shams
# Retrieved 2026-01-03, License - CC BY-SA 4.0
from Ui.uiLoader import load_ui
from PySide6.QtWidgets import QWidget, QGraphicsScene, QGraphicsPixmapItem
from PySide6.QtCore import QTimer, Qt
from PySide6.QtGui import QImage, QPixmap, QPen
import cv2
class MainWindowTest:
def __init__(self):
# Load main window
self.ui = load_ui("graphicsviewTest.ui")
self.graphicsview = self.ui.graphicsView
self.scene = QGraphicsScene()
self.pixmap_item = QGraphicsPixmapItem()
self.scene.addItem(self.pixmap_item)
self.graphicsview.setScene(self.scene)
# Persistent camera object
self.cap = cv2.VideoCapture(0)
# Timer drives the video stream
self.timer = QTimer()
self.timer.timeout.connect(self.update_frame)
self.timer.start(30) # ~33 FPS
def update_frame(self):
ret, frame = self.cap.read()
if not ret:
return
qt_image = self.convert_cv_qt(frame)
pixmap = QPixmap.fromImage(qt_image)
self.pixmap_item.setPixmap(pixmap)
self.scene.setSceneRect(pixmap.rect())
self.graphicsview.fitInView(self.scene.sceneRect(),Qt.KeepAspectRatio)
def convert_cv_qt(self, frame):
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
h, w, ch = rgb.shape
bytes_per_line = ch * w
image = QImage(
rgb.data,
w,
h,
bytes_per_line,
QImage.Format_RGB888
)
return image.copy()
Wie kann ich dieses Problem (zugeschnittene Kameraszene) lösen?
Mobile version