По какой-то причине мне нужно обернуть opencv VideoCapture в классе, который будет использоваться в Qt Quick.Как правильно рисовать последовательное изображение в QQuickPaintedItem
Существует два класса: один - камера, другой - CameraView. CameraView наследуется от QQuickPaintedItem.
Класс камеры будет получать изображение периодически. Это достигается с помощью QObject :: startTimer (int interval). (например, если fps веб-камеры составляет 30, интервал таймера составляет 1000/30 - 8, 8 - отклонение времени). После того, как камера получила изображение, она уведомляет CameraView о перерисовке, вызывая CameraView :: Update().
И в CameraView :: paint (QPainter *) CameraView получит копию изображения из класса Camera и рисует это изображение по вызову QPainter :: drawImage (...).
Я получил некоторые проблемы в процессе кодирования:
Я пытаюсь заменить время события с QThread, чтобы получить изображение с камеры периодически. Когда я вызываю CameraView :: Update() в QThread, CameraView не перерисовывает. В чем проблема?
В моем ноутбуке, когда я рисую изображение CameraView в полноэкранном режиме, я обнаружил, что одна программа python замедляется. Является ли другой способ рисовать изображение с более низкой стоимостью и эффективностью?
спасибо. Я этого добился. И одна важная вещь - установить renderTarget как QQuickPaintedItem :: FramebufferObject в CameraView, это очень важно для моего ноутбука. –
Помог ли мой ответ или нет? – AlexanderVX
Конечно! спасибо –