Cómo pintar una imagen secuencial de manera eficiente en QQuickPaintedItem

Por alguna razón, necesito ajustar opencv VideoCapture en una clase que se usará en Qt Quick.

Hay dos clases, una es Camera, otra es CameraView. CameraView heredado de QQuickPaintedItem.

La clase de cámara obtendrá imágenes periódicamente. Lo logró por QObject :: startTimer (int intervalo). (por ejemplo, si fps de la cámara web es 30, el intervalo del temporizador es 1000/30 - 8, 8 es la desviación del tiempo). Una vez que la cámara obtiene la imagen, notifica a CameraView para volver a pintar llamando a CameraView :: Update ().

Y en CameraView :: paint (QPainter *), CameraView obtendrá una copia de la imagen de la clase Camera y pintará esta imagen llamando a QPainter :: drawImage (...).

Tengo algunos problemas en el proceso de codificación:

Intento reemplazar el evento de tiempo con QThread para obtener imágenes de la cámara periódicamente. Cuando llamo CameraView :: Update () en QThread, CameraView no se repinta. ¿Cuál es el problema?

En mi computadora portátil, cuando hago que CameraView pinte la imagen en pantalla completa, encontré que un programa de Python se ralentizaba. ¿Es otra forma de pintar la imagen con menor costo y eficiente?