标题2:无需按住shift实现pcl库的registerPointPickingCallback函数对点云取点;
一、当前背景:在大量浏览现有资料后,未发现一种较为便捷且灵活的方式去实现点云点击取点;而比较经典的对点云取点的方式为pcl库自带的registerPointPickingCallback函数,通过该函数可实现在指定的vtk窗口中用shift+鼠标左键对点云点击取点并获得点坐标。
二、当前问题:现有的pcl库的点云取点方式必须要按住shift键时鼠标左键点击,该方式及其不灵活且不便于开发,然而笔者愚钝未找到重写shift的部分,因此需要一种新的方式代替使用该功能时必须按住shift的步骤。
三、实现方式:采用模拟键盘按住shift的方式重写触发函数,并通过计时器或bool值等方式释放shift按键;
模拟shift按键代码:
#include <iostream>
#include <windows.h>
#include <thread>
#include <chrono>
int main() {
// 按下Shift键
keybd_event(VK_SHIFT, 0, 0, 0);
//方式1-放计时器的处理代码,或者判断条件,以便释放Shift键
//方式2-将释放shift的代码放在触发点云取点函数中
// 释放Shift键
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
return 0;
}