2017-12-04 9 views
0

私はPyQt4とPhononモジュールを使用して視線追跡データ視覚化ツールを構築しています。本質的に、私は被験者の目の動きが追跡されている間、被験者が見ていたビデオを持っています。視線追跡データは、x、y座標の形式である。私は関心のあるビデオを再生し、そのビデオを、被写体がどこを見ていたかを示す円でオーバレイすることができるようにしたい。Phonon&PyQtを使用したカスタムグラフィックスオーバーレイビデオ

誰にも分かりませんか?このリンクによれば、Play a video with custom overlay graphics Phonon.VideoWidgetをQGraphicsProxyWidgetの中に配置する方法があるようですが、私はその提案を実装する方法が不明です。

ご協力いただければ幸いです!

pyqtgraphを使用して私の希望する機能を達成する方法があるかどうかを知りたいと思っています。このオプションをコメントとして

+0

私の答えをチェックし、もしそれは正しい方法で表示することを忘れないでください、あなたがそれを行う方法がわからない場合は、次のリンクを確認してください:[ツアー] – eyllanesc

答えて

0

がQGraphicsProxyWidgetを使用することで、あなたはその型のオブジェクトを作成することも、addWidgetを使用することができます。

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.phonon import Phonon 

class Widget(QWidget): 
    def __init__(self, *args, **kwargs): 
     QWidget.__init__(self, *args, **kwargs) 
     lay = QVBoxLayout(self) 
     vp = Phonon.VideoPlayer() 
     media = Phonon.MediaSource('/path/of/video') 
     vp.load(media) 
     vp.play() 
     scene = QGraphicsScene() 
     self.view = QGraphicsView(scene, self) 
     lay.addWidget(self.view) 
     proxy = scene.addWidget(vp) 
     # or 
     # proxy = QGraphicsProxyWidget() 
     # scene.addItem(proxy) 
     self.item = scene.addEllipse(QRectF(0, 0, 20, 20), QPen(Qt.red), QBrush(Qt.green)) 
     self.item.setParentItem(proxy) 

    def mousePressEvent(self, event): 
     p = self.view.mapToScene(event.pos()) 
     # move item 
     self.item.setPos(p-QPoint(20, 20)) 
     QWidget.mousePressEvent(self, event) 

    def resizeEvent(self, event): 
     if event.oldSize().isValid(): 
      print(self.view.scene().sceneRect()) 
      self.view.fitInView(self.view.scene().sceneRect(), Qt.KeepAspectRatio) 
     QWidget.resizeEvent(self, event) 

if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    w = Widget() 
    w.show() 
    sys.exit(app.exec_()) 

出力:

enter image description here

+0

うわー、実装に手伝ってくれてありがとう! :)しかし、私は私のビデオでこのウィジェットを実行すると、あまりにもうまくビデオを再生しません。出力は次のとおりです:[link](https://ibb.co/gAFFEb)。 そして、私はあなたのコードで2番目のメソッドを試してみると思った: proxy = QGraphicsProxyWidget() scene.addItem(proxy) しかし、これはちょうど私のバックグラウンドで再生されているビデオのない空白のキャンバスを与えます。 [link](https://ibb.co/guzNSw) これらの問題を解決する方法はありますか?どうもありがとうございます! – hectorcho

+0

@Hectorビデオにはどのような拡張機能がありますか? – eyllanesc

+0

@Hectorビデオを共有することができます – eyllanesc

関連する問題