Wie zeige ich QPixmap (Kamera-Feed) in QGraphicsView ohne Zuschneiden?Python

Python-Programme
Anonymous
 Wie zeige ich QPixmap (Kamera-Feed) in QGraphicsView ohne Zuschneiden?

Post by Anonymous »

Ich habe mit QtDesigner eine GUI entworfen, bei der es sich um ein MainWindow mit zentralem Widget handelt, das nur eine Grafikansicht hat.
Image

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()
Dieser Code läuft ABER was in der Grafikansicht angezeigt wird, ist ein zugeschnittener Kamerastream (nicht die gesamte Szene, die die Kamera bereits sieht).

Wie kann ich dieses Problem (zugeschnittene Kameraszene) lösen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post