【问题标题】:How to get current camera parameters in pyqtgraph?如何在pyqtgraph中获取当前相机参数?
【发布时间】:2021-10-20 12:33:15
【问题描述】:

如何在 pyqtgraph 中获取当前相机参数?下面的代码会启动一个窗口,我可以移动和旋转相机,但文档没有告诉我如何获取相机参数。如果有任何热键可以得到它。

import pyqtgraph as pg
import pyqtgraph.opengl as gl

from PyQt5.QtCore import QBuffer
from PyQt5 import QtCore, QtGui
from pyqtgraph.Qt import QtWidgets
from pyqtgraph.Qt import QtCore, QtGui


app = QtWidgets.QApplication(sys.argv)
w = gl.GLViewWidget()
g = gl.GLGridItem(size=QtGui.QVector3D(100,100,1),color=(255, 255, 0, 100))
w.addItem(g)    
w.show()    
app.exec()

https://pyqtgraph.readthedocs.io/en/latest/3dgraphics/glviewwidget.html 中的 orbit(azim, elev)pan(dx, dy, dz, relative='global') 函数让我设置相机位置,但如何在屏幕启动时获取它们?

即我想启动屏幕,将相机移动到我喜欢的位置,然后存储 azim, elev, dx ,dy, dz 以备下次使用。

【问题讨论】:

    标签: python pyqtgraph


    【解决方案1】:

    您可以通过cameraPrams()方法获取Camera参数。
    这是基于您的代码的短代码 sn-p。

    import sys
    
    import PyQt5
    from pyqtgraph.Qt import QtGui
    from pyqtgraph.Qt import QtWidgets
    from pyqtgraph.opengl import GLViewWidget, GLGridItem
    
    
    class PrintCameraWidget(GLViewWidget):
        """Small ViewWidget which prints camera parameters"""
    
        def wheelEvent(self, ev):
            """Update view on zoom event"""
            super().wheelEvent(ev)
            self.get_camera_view()
    
        def mouseMoveEvent(self, ev):
            """Update view on move event"""
            super().mouseMoveEvent(ev)
            self.get_camera_view()
    
        def mouseReleaseEvent(self, ev):
            """Update view on move event"""
            super().mouseReleaseEvent(ev)
            self.get_camera_view()
    
        def get_camera_view(self):
            camera_params = self.cameraParams()
            print("New camera parameters: ", camera_params)
    
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        w = PrintCameraWidget()
        g = GLGridItem(size=QtGui.QVector3D(100, 100, 1), color=(255, 255, 0, 100))
        w.addItem(g)
    
        # Create and set Camera parameters
        camera_params = {'rotation': PyQt5.QtGui.QQuaternion(1.0, 0.0, 0.0, 0.0),
                         'distance': 10.0,
                         'fov': 60}
        w.setCameraParams(**camera_params)
        print("Initial camera parameters: ", w.cameraParams())
    
        w.show()
        app.exec()
    

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2015-01-16
      • 2018-07-21
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 2020-11-02
      相关资源
      最近更新 更多