可视化QT中PMD栏板纳米的流
Visualize stream from a PMD Camboard Nano in Qt
编辑:诚实的建议如果您想实时从PMD流式传输,请使用C#。任何UI都很易于创建,并且OS非常强大的库Metrilus AG的Metricam,它支持各种3D-Cameras的流媒体。我能够得到稳定的45 fps。
原始:
我一直在努力从PMD扫描板纳米中获取深度信息,并将其形象化为GUI。该信息以165x120浮点数为单位传递。
我也想将数据用于分析目的(图像质量,白噪声等),所以我需要在特定的帧率上抓住框架。问题是,PMD使用相机提供的SDK(用于Matlab& c)仅提供了通过调用
抓住单个帧的可能性pmdUpdate(hnd);
因此,帧率取决于您对图像数据进行轮询的频率。
我最初尝试在MATLAB中进行分析,但是我无法从相机中获得超过30 fps,并在循环中添加了一些进一步的代码,因此无法使用(我需要至少可靠的25 fps)。
然后,我切换到C,在那里我获得了高达70 fps的速率,但无法可视化数据。然后,我尝试使用基于C/C 的QT进行了尝试 - 因此,它应该快速轮询图像数据,并且可以轻松地包括PMDSDK的库。但是,由于我是QT的新手,我对UI元素的了解不多。
所以我的问题:
是否有任何表现方式可以在QT-GUI上可视化2D-浮动阵列?如果不是,那么在带有C 的Visual Studio中有用的东西如何?
(我知道在qgraphicsview上绘制每个像素是愚蠢的,但是我尝试了,我得到的帧速率为.4 fps ...)
)感谢您的任何有用建议!
jannik
qimage类实际上具有接受UCHAR指针/数组的构造函数。您只需要将我的浮点值映射到UCHAR-FORMAT中的RGB值。
pmdGetDistances(hnd, dist, dd.img.numColumns*dd.img.numRows*sizeof(float));
uchar *imagemap = new uchar[dd.img.numColumns*dd.img.numRows*3];
int i,j;
for (i = 0; i < 165; i++){
for (j = 0; j < 120; j++){
uchar value = (uchar)std::floor(40*dist[j*165+i]);
if(value > 255 || value < 0){
value = 0;
}
//colorscaling integrated
imagemap[3*(j*165+i)] = floor((255-value)*(255-value)/255.0);
imagemap[3*(j*165+i)+1] = abs(floor((value-127)/1.5));
imagemap[3*(j*165+i)+2] = floor(value*value/255.0);
}
}
然后可以将qimage转换为pixmap并显示在qgraphicsview中。这对我有用,但是帧率似乎并不是真的稳定。
QImage image(imagemap, 165, 120, 165*3, QImage::Format_RGB888);
QPixmap pmap(QPixmap::fromImage(image));
scene->addPixmap(pmap.scaled(165,120));
ui->viewCamera->update();
可能值得一试,直到所需的时间经过。QThread::msleep(msec);
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- 可视化QT中PMD栏板纳米的流