Как рисовать на объекте QCamera в режиме реального времени?
Данный код рисует линию под видео, мне же надо на видео.
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from PySide2.QtMultimediaWidgets import QCameraViewfinder
from PySide2.QtCore import *
from PySide2.QtMultimedia import QCamera, QCameraInfo
class form (QWidget):
def __init__(self):
super ().__init__ ()
self.flag = False
self.initUI ()
def initUI(self):
self.labelPixMap=QLabel()
self.layout = QHBoxLayout ()
self.setLayout (self.layout)
self.cameraView = QCameraViewfinder ()
self.cameraInfo = QCameraInfo.defaultCamera ()
self.camera = QCamera (self.cameraInfo)
self.camera.setViewfinder (self.cameraView)
self.layout.addWidget (self.cameraView)
if self.camera.status () != QCamera.UnavailableStatus:
self.camera.start ()
def imageCaptured(self,id,previewImage):
self.image = previewImage
def paintEvent(self,QPaintEvent):
painter = QPainter (self)
pen = QPen ()
pen.setColor (Qt.green)
painter.setPen (pen)
painter.drawLine (100, 100, 300, 100)
if __name__ == "__main__":
import sys
app = QApplication (sys.argv)
wform = form ()
wform.resize (400, 300)
wform.show ()
sys.exit (app.exec_ ())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так, только где рисовать и какого размера - сделаете самостоятельно.
'''
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from PySide2.QtMultimediaWidgets import QCameraViewfinder
from PySide2.QtCore import *
from PySide2.QtMultimedia import QCamera, QCameraInfo
'''
from PyQt5.Qt import *
class form (QWidget):
def __init__(self):
super ().__init__ ()
self.flag = False
self.initUI ()
def initUI(self):
self.labelPixMap = QLabel()
self.layout = QVBoxLayout() # QHBoxLayout()
self.setLayout(self.layout)
self.cameraView = QCameraViewfinder()
self.cameraInfo = QCameraInfo.defaultCamera()
self.camera = QCamera(self.cameraInfo)
self.camera.setViewfinder(self.cameraView)
self.pushButton = QPushButton("Click me") # +
self.pushButton.clicked.connect(self.func) # +
self.layout.addWidget(self.cameraView)
self.layout.addWidget(self.pushButton) # +
if self.camera.status () != QCamera.UnavailableStatus:
self.camera.start ()
def imageCaptured(self, id, previewImage):
self.image = previewImage
def paintEvent(self,QPaintEvent):
painter = QPainter (self)
pen = QPen ()
pen.setColor (Qt.green)
painter.setPen (pen)
painter.drawLine (100, 100, 300, 100)
def func(self):
#self.flag = True
size = self.style().pixelMetric(QStyle.PM_SmallIconSize)
size = 400
pm = QPixmap(size, size)
pm.fill(Qt.transparent)
qp = QPainter(pm)
pen = QPen(QColor(Qt.red), 4)
qp.setPen(pen)
qp.drawLine(0, size/2, size, size/2)
# конец рисования на растровом изображении, это тоже важно!
qp.end()
self.label = QLabel(self)
self.label.resize(size, size)
self.label.setPixmap(pm)
self.label.show()
self.update()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
wform = form()
wform.resize(400, 300)
wform.show()
sys.exit(app.exec_ ())
