Как показать изображение с камеры без обрезки в программе, разработанной Qt и написанной на Python?Python

Программы на Python
Ответить
Anonymous
 Как показать изображение с камеры без обрезки в программе, разработанной Qt и написанной на Python?

Сообщение Anonymous »

Я разработал графический интерфейс с помощью QtDesigner, который представляет собой главное окно с центральным виджетом, имеющим только графическое представление.
Изображение

В следующем коде Python я использовал openCV для подключения камеры и попытался показать изображение с камеры внутри графического представления:

Код: Выделить всё

# 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()
Этот код выполняется НО внутри графического представления отображается обрезанный поток камеры (не вся сцена, которую камера уже видит).

Как я могу решить эту проблему (сцена обрезанной камеры)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ed-and-wri
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»