首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用比目图和LiDAR快速、实时地绘制点

用比目图和LiDAR快速、实时地绘制点
EN

Stack Overflow用户
提问于 2017-09-29 11:50:09
回答 1查看 10K关注 0票数 5

我想要创建一个实时的,点绘制图形用户界面。我正在使用扫描扫描LiDAR,在这个LiDAR的每一个扫描(工作在1-10赫兹之间),我收到大约1000个点(x,y)描述的LiDAR周围。这是一个2D LiDAR。

我到处都找过了,尝试了无数用于pyqtgraph的代码片段,但是要么崩溃了,要么超级慢,要么根本不起作用。

是否有一种直接创建绘图仪窗口的方法,并且在每次新的扫描/数据传递时,将这些推送到绘图仪窗口?

感谢任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-29 16:53:00

我不清楚你到底想做什么,所以我假设你想用每秒刷新10次的1000个点绘制一个散点图。下一次,请包括您的代码,以便我们可以重现您的问题,看看您想要实现什么。

根据我的经验,PyQtGraph是Python中最快的选项。它可以很容易地绘制1000点,在10赫兹。参见下面的示例。

代码语言:javascript
复制
#!/usr/bin/env python

from PyQt5 import QtCore, QtWidgets
import pyqtgraph as pg
import numpy as np


class MyWidget(pg.GraphicsWindow):

    def __init__(self, parent=None):
        super().__init__(parent=parent)

        self.mainLayout = QtWidgets.QVBoxLayout()
        self.setLayout(self.mainLayout)

        self.timer = QtCore.QTimer(self)
        self.timer.setInterval(100) # in milliseconds
        self.timer.start()
        self.timer.timeout.connect(self.onNewData)

        self.plotItem = self.addPlot(title="Lidar points")

        self.plotDataItem = self.plotItem.plot([], pen=None, 
            symbolBrush=(255,0,0), symbolSize=5, symbolPen=None)


    def setData(self, x, y):
        self.plotDataItem.setData(x, y)


    def onNewData(self):
        numPoints = 1000  
        x = np.random.normal(size=numPoints)
        y = np.random.normal(size=numPoints)
        self.setData(x, y)


def main():
    app = QtWidgets.QApplication([])

    pg.setConfigOptions(antialias=False) # True seems to work as well

    win = MyWidget()
    win.show()
    win.resize(800,600) 
    win.raise_()
    app.exec_()

if __name__ == "__main__":
    main()

它的工作方式如下。通过绘制空列表,可以创建PlotDataItem。这代表了点的集合。当新的数据点到达时,使用setData方法将它们设置为PlotDataItem的数据,这将删除旧的数据点。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46488204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档