#include <librealsense2/rs.hpp> #include <opencv2/opencv.hpp> #include <time.h> int main() { // 创建RealSense管道 rs2::pipeline pipe; rs2::config cfg; cfg.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16, 30); pipe.start(cfg); // 循环获取深度帧并保存为图片 while (true) { rs2::frameset frames = pipe.wait_for_frames(); rs2::depth_frame depth = frames.get_depth_frame(); // 获取当前时间并格式化为指定的日期时间格式 time_t now = time(nullptr); struct tm tstruct; char buf[80]; localtime_s(&tstruct, &now); strftime(buf, sizeof(buf), "%Y%m%d_%H%M%S", &tstruct); // 将深度帧转换为OpenCV格式 cv::Mat depth_image(cv::Size(640, 480), CV_16UC1, (void*)depth.get_data(), cv::Mat::AUTO_STEP); // 以时间命名图片并保存 std::string file_name = std::string(buf) + ".png"; cv::imwrite(file_name, depth_image); } return 0; }
时间: 2024-04-23 17:24:32 浏览: 7
这段代码是使用Intel RealSense相机获取深度帧并将其转换为OpenCV格式,然后将其保存为PNG格式的图像文件。如果您想要运行这段代码,您需要安装RealSense SDK和OpenCV库,并将代码编译为可执行文件。请注意,这段代码是一个无限循环,只有在手动停止程序或按下Ctrl + C时才会退出循环。另外,由于这段代码使用了Windows特定的函数localtime_s,因此它只能在Windows操作系统上编译和运行。如果您使用的是其他操作系统,请更改代码以使用适当的函数。
相关问题
#include <opencv2/opencv.hpp>打开摄像头
可以使用以下代码打开摄像头:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
cv::VideoCapture cap(0); // 打开默认摄像头(编号为0)
if (!cap.isOpened()) // 检查是否成功打开摄像头
{
std::cerr << "Failed to open camera!" << std::endl;
return -1;
}
cv::Mat frame;
while (true)
{
cap >> frame; // 读取一帧图像
cv::imshow("Camera", frame); // 在窗口中显示图像
int key = cv::waitKey(1); // 等待用户按键,返回按下的键的 ASCII 码值
if (key == 27) // 如果用户按下 ESC 键,则退出循环
break;
}
return 0;
}
```
该程序使用 OpenCV 库打开默认摄像头,并循环读取摄像头图像并显示在窗口中,直到用户按下 ESC 键退出程序。
#include <opencv2/viz.hpp>错误
如果在编译OpenCV程序时出现`#include <opencv2/viz.hpp>`错误,可能是因为你的OpenCV库没有安装或者安装的版本不支持`cv::viz`模块。
`cv::viz`是OpenCV库中的一个可视化模块,需要在编译OpenCV库时开启此模块才能使用。如果你使用的是预编译的OpenCV库,可能需要安装带有`cv::viz`模块的OpenCV版本或者自行编译OpenCV库并开启此模块。
如果你已经安装了带有`cv::viz`模块的OpenCV版本,但仍然出现该错误,可以尝试重新安装OpenCV库并确保开启了此模块。此外,也可以检查编译器是否正确地链接了OpenCV库,以及库文件路径是否正确设置。