前面一篇回顾了PLC官网资料,安装方法和使用,接下来回顾下如何在MFC、QT、Python环境下的使用,如何在这些环境下的界面上显示vtk数据或者pcl数据。这三种环境也是常涉及到的,所以有必要整清楚点。
1. MFC界面显示PCL点云
博主根据之前博客,又重新配置了下
MFC界面上显示pcl点云数据_竹叶青lvye的博客-CSDN博客_mfc pcl显示
显示效果如下:
MFC工程链接如下:
链接:https://pan.baidu.com/s/1F0woRBfvbEomKy_UVckGDw
提取码:rxjn
2. MFC界面显示VTK数据
由于PLC自带的vtk并不含有支持MFC的功能,所以这里需要重新编译下vtk,过程见博主之前博客
VS2017、QT5.12.1环境下的VTK8.0编译过程记录_竹叶青lvye的博客-CSDN博客_vtkguisupportqt
vtk的官网路径
VTK - The Visualization Toolkit
gitlab中可以下载vtk源码 VTK / VTK · GitLab
Cmake官网链接如下:
网址Index of /files可以下载各版本
博主这里使用cmake又重新编译了下vtk,当然环境和之前博客不一样VS2017、QT5.12.1环境下的VTK8.0编译过程记录_竹叶青lvye的博客-CSDN博客_vtkguisupportqt
这次QT版本是5.14.2,VS版本是2019
cmake工具,记得勾选Grouped和Advanced两个选项,不然很多编译的命令指定项修改不了。
VS2019配置QT的过程见博主之前的博客
VS2019配置Qt5.14.2以及在线配置Qt5.15.2_竹叶青lvye的博客-CSDN博客_vs2019对应qt多少
cmake的一些过程记录如下:
生成的工程编译后,产生一个错误(和之前博客里一样,一些文件没有下载完毕)。
再次编译即可
博主这边只编译下debug版本。Release版本方法一样。
完毕后可以仅生成下install工程。
可以和pcl自带的vtk目录对比,是一样的。
同时也看到两边的名字命名方式也基本相同
所以不需要批量去更改名字,若碰到批量更改,可参考之前博客中脚本的方法。该篇上面还有一份统计文件夹里文件名字的脚本,也是常用的,可参考。
这边直接将编译的替换为了原来的。替换后,直接运行上面的MFCPLC例子也是可以直接跑的。
这边博主又重新构造了一份工程,实现下博客中的功能,这里工程中只引用了vtk相关内容,vtk的lib库名列表,可用如下脚本提取:
- # author:"jiugeshao"
- # data:2022/9/3 2:16
-
-
- import os
- def ListFilesToTxt(Currentdir, outfile, nameExtentisons, isIncludeSubDir, isDebug):
- """
- :param Currentdir: 需要统计的目录
- :param outfile: 需要输出到的txt文件
- :param nameExtentisons: 后缀列表
- :param isIncludeSubDir: 是否需要统计子目录
- :return:
- """
- exts = nameExtentisons.split(" ")
- files = os.listdir(Currentdir)
- for name in files:
- fullname = os.path.join(Currentdir, name)
- if (os.path.isdir(fullname) & isIncludeSubDir):
- ListFilesToTxt(fullname, outfile, nameExtentisons, isIncludeSubDir, isDebug)
- else:
- for ext in exts:
- if (name.endswith(ext)):
- if(isDebug == True):
- if("gd" in name or "d.lib" in name):
- outfile.write(name + "\n")
- break
- else:
- if("gd" not in name or "d.lib" in name):
- outfile.write(name + "\n")
- break
-
-
-
- def Read(Currentdir, outfile, isDebug):
- """
- :param Currentdir:需要统计的目录
- :param outfile:需要输出到的txt文本
- :return:
- """
- nameExtensons = ".lib" #若要支持多种后缀统计,可以空格隔开,再加其它后缀名
- file = open(outfile,"w")
- if not file:
- print("cannot open the fule %s" % outfile)
-
- ListFilesToTxt(Currentdir, file, nameExtensons, 1, isDebug)
-
- file.close()
-
-
- dir = "C:\\Program Files\\PCL 1.12.1\\3rdParty\\VTK\\lib"
-
- debug_txt = "D:\\vtk.txt"
-
- Read(dir, debug_txt, isDebug=True)
-
-
博主又实现了一遍该功能(这里是从txt中读入vtk的数据,然后显示),效果如下:
代码链接如下:
链接:https://pan.baidu.com/s/1EE9_CciwuPutpKxPGomoHg
提取码:lqge
所用的txt(点云数据)见如下链接
链接:https://pan.baidu.com/s/1vdtqDN_rDSSxy4hUG13jjw
提取码:3gjk
MFC界面上如何显示2D图像可以参考博主之前博客
vs2017配置opencv4.2及QTcreator配置opencv4.2在界面显示图像_竹叶青lvye的博客-CSDN博客_qtcreator配置opencv
1. QT的安装见前面博客
VS2019配置Qt5.14.2以及在线配置Qt5.15.2_竹叶青lvye的博客-CSDN博客_vs2019对应qt多少
注意: 9.1版本的VTK,在cmake时,已经没有博主前博客中所说的选项
VS2017、QT5.12.1环境下的VTK8.0编译过程记录_竹叶青lvye的博客-CSDN博客
上面的是vtk8.0的选项,如下是9.1的
对比看,已经没有了Qt5UiPlugin_DIR和VTK_BUILD_QT_DESIGNER_PLUGIN两个选项,也就没办法生成QVTKWidgetPlugin.dll
2. 可按照如下方法来配置
在VS2019中新建一个QT工程,在ui界面上添加Widget控件, 完毕后进行提升
出来的对话框如下
这里上面的提升的类名称不是随意取的,前面博客编译好的vtk9.1版本中是含有该文件的,vtk的发布者已经实现了该类,我们只是用一下而已。
完毕后给工程引用下vtk相关的头文件和lib库。完毕后编译,成功。
然后再继续完善界面和内容,这里在QT界面上显示了下vtk图形(从txt文本中读入数据),显示效果如下:
这里上传下测试所用的QT工程,所用txt文件可从上面链接获取
链接:https://pan.baidu.com/s/1pUqkJAoaRAzyMr1-TWd7oQ
提取码:i01q
3.这边又做了一个VS QT界面上如何显示pcl点云的工程,可参考博主之前博客
QT界面上显示pcl点云数据_竹叶青lvye的博客-CSDN博客_qt显示点云数据
博客当时所用的是vtk8.0版本,提供QVTKWidget控件,而这篇博客使用的是vtk 9.1版本,上面第2点已经介绍了如何实现该控件的功能,这里不在赘叙,直接贴上自己实现的工程的链接。(管理员权限运行,显示效果如下)
链接:https://pan.baidu.com/s/1vx2B_UWARZkUXeQiCmEa0w
提取码:zd2v
若拿QTCreator作为QT的编译环境,在界面上显示点云,博主这边就不再回顾了,大同小异,自己可结合博主之前博客发挥。(这篇博客其实就已经用了提升Widget的方法,并不需要QVTKWidgetPlugin.dll)
QTcreator界面上显示pcl点云数据_竹叶青lvye的博客-CSDN博客_qt点云
QT界面上如何显示图片,这边也不再回顾,可参考博主之前博客
vs2017配置opencv4.2及QTcreator配置opencv4.2在界面显示图像_竹叶青lvye的博客-CSDN博客_qtcreator配置opencv
pyqt5做界面的方式,以及如何在pyqt界面显示open3D点云,plc点云,2D图像参考博主之前博客,这里不再赘叙。
pycharm配置PyQt5、Open3D、Python-pcl_竹叶青lvye的博客-CSDN博客_pycharm配置pcl