何らかの理由で、Qt Quickで使用されるクラスでopencv VideoCaptureをラップする必要があります。QQuickPaintedItemで効率的な連続画像をペイントする方法
2つのクラスがあり、1つはCamera、もう1つはCameraViewです。 CameraViewはQQuickPaintedItemから継承します。
カメラクラスは定期的に画像を取得します。それはQObject :: startTimer(int間隔)によって達成されました。 (たとえば、ウェブカメラのfpsが30の場合、タイマー間隔は1000/30 - 8、8は時間のずれです)。 Cameraが画像を取得すると、CameraView :: Update()を呼び出すことによって再描画するようにCameraViewに通知します。
CameraView :: paint(QPainter *)では、CameraViewはCameraクラスからイメージのコピーを取得し、このイメージをQPainter :: drawImage(...)コールでペイントします。
私はコーディングの過程でいくつかの問題だ:
私は定期的にカメラから画像を取得するためにQThreadとタイムイベントを交換しようとします。 QThreadでCameraView :: Update()を呼び出すと、CameraViewは再描画しません。何が問題ですか?
私のラップトップでは、CameraViewで画像をフルスクリーンでペイントすると、Pythonプログラムが遅くなることがわかりました。低コストで効率的に画像をペイントする別の方法はありますか?
ありがとうございます。私はそれを達成しました。また、CameraViewでrenderTargetがQQuickPaintedItem :: FramebufferObjectに設定されていることが重要です。 –
私の答えは助けになったのですか? – AlexanderVX
ありがとうございました –