Como pintar imagem sequencial de maneira eficiente no QQuickPaintedItem

Por alguma razão, preciso agrupar o opencv VideoCapture em uma classe que será usada no Qt Quick.

Existem duas classes, uma é Camera e outra é CameraView. CameraView herdado de QQuickPaintedItem.

A classe da câmera obterá a imagem periodicamente. Foi alcançado por QObject :: startTimer (intervalo int). (por exemplo, se o fps da webcam for 30, o intervalo do temporizador será de 1000/30 a 8, 8 será o desvio de tempo). Depois que a Câmera obtém uma imagem, ela notifica o CameraView para redesenhar chamando CameraView :: Update ().

E no CameraView :: paint (QPainter *), o CameraView obtém uma cópia da imagem da classe Camera e pinta essa imagem chamando QPainter :: drawImage (...).

Eu tenho alguns problemas no processo de codificação:

Tento substituir o evento de hora pelo QThread para obter imagens da câmera periodicamente. Quando eu chamo CameraView :: Update () no QThread, o CameraView não é redesenhado. Qual é o problema?

No meu laptop, quando faço o CameraView pintando a imagem em tela cheia, encontrei um programa em python mais lento. Existe outra maneira de pintar imagens com menor custo e eficiência?

questionAnswers(1)

yourAnswerToTheQuestion