#include "opencv2/videoio.hpp" // 包含OpenCV视频输入/输出头文件
#include "opencv2/highgui.hpp" // 包含OpenCV高级用户界面头文件
#include "opencv2/imgproc.hpp" // 包含OpenCV图像处理头文件
using namespace cv; // 使用opencv命名空间中的内容
using namespace std; // 使用标准库命名空间中的内容
int main()
{
VideoCapture capture(CAP_INTELPERC); // 创建一个VideoCapture对象来获取英特尔感知摄像头的数据
for(;;) // 无限循环开始
{
Mat depthMap; // 定义一个Mat对象,用于存储深度图
Mat image; // 定义一个Mat对象,用于存储彩色图像
Mat irImage; // 定义一个Mat对象,用于存储红外图像
Mat adjMap; // 定义一个Mat对象,用于存储调整后的深度图
capture.grab(); // 抓取当前帧的数据
capture.retrieve(depthMap, CAP_INTELPERC_DEPTH_MAP); // 从抓取的帧中检索出深度图
capture.retrieve(image, CAP_INTELPERC_IMAGE); // 从抓取的帧中检索出彩色图像
capture.retrieve(irImage, CAP_INTELPERC_IR_MAP); // 从抓取的帧中检索出红外图像
normalize(depthMap, adjMap, 0, 255, NORM_MINMAX, CV_8UC1); // 将深度图归一化到0-255范围内的单通道图像
applyColorMap(adjMap, adjMap, COLORMAP_JET); // 对归一化后的深度图应用颜色映射,以便更好地可视化
imshow("RGB", image); // 显示彩色图像窗口
imshow("IR", irImage); // 显示红外图像窗口
imshow("DEPTH", adjMap); // 显示深度图窗口
if(waitKey(30) >= 0) // 每30ms检测一次是否有键盘输入,如果有则退出循环
break;
}
return 0; // 返回0,结束程序
}
这段代码的功能是使用OpenCV库来捕获英特尔感知摄像头的数据,并对获取的深度图、彩色图和红外图进行处理和显示。处理包括对深度图的归一化和颜色映射,以便更好地进行深度数据的可视化。最后,这些图像通过不同的窗口展示出来,如果有用户操作按键,程序将终止运行。