最近有个老师让我做一下用深度相机拍照,然后合计学一下realsense d415。

这个网站有视频教程:https://www.intelrealsense.com/zh-hans/videos-and-tutorials/

在linux上安装:搜索librealsense,我安装的是源码,然后我编译的。

这个网站是https://dev.intelrealsense.com/docs/code-samples有案例的代码

找到连opencv那个,然后我们写一下cmakelist.txt

cmake_minimum_required(VERSION 3.0)
project(paizhao)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS} )
include_directories("/usr/local/inlude/")
add_executable(paizhao paizhao.cpp)
link_directories(paizhao "/usr/local/lib/")
target_link_libraries(paizhao ${OpenCV_LIBS})
target_link_libraries(paizhao /usr/local/lib/librealsense2.so)

然后看一下代码,我们之后就在上面二次开发:

实例个颜色图对象,实例管道对象,然后建立个窗口,然后加个等待,之后获取深度图,这行重点,同时应用颜色图,然后设置图片大小,之后建立图片,然后我们就加几行代码就行。

#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include <opencv2/opencv.hpp>   // Include OpenCV APIusing namespace cv;int main(int argc, char * argv[]) try
{// Declare depth colorizer for pretty visualization of depth datars2::colorizer color_map;// Declare RealSense pipeline, encapsulating the actual device and sensorsrs2::pipeline pipe;// Start streaming with default recommended configurationpipe.start();const auto window_name = "Display Image";namedWindow(window_name, WINDOW_AUTOSIZE);while (waitKey(1) < 0 && getWindowProperty(window_name, WND_PROP_AUTOSIZE) >= 0){rs2::frameset data = pipe.wait_for_frames(); // Wait for next set of frames from the camerars2::frame depth = data.get_depth_frame().apply_filter(color_map);// Query frame size (width and height)const int w = depth.as<rs2::video_frame>().get_width();const int h = depth.as<rs2::video_frame>().get_height();// Create OpenCV matrix of size (w,h) from the colorized depth dataMat image(Size(w, h), CV_8UC3, (void*)depth.get_data(), Mat::AUTO_STEP);// Update the window with new dataimshow(window_name, image);}return EXIT_SUCCESS;
}
catch (const rs2::error & e)
{std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n    " << e.what() << std::endl;return EXIT_FAILURE;
}
catch (const std::exception& e)
{std::cerr << e.what() << std::endl;return EXIT_FAILURE;
}

首先我们先看一下保存图片的函数。

imwrite(name,image);

然后我们要设置一下名称,这时我们学一下string这个库。这个例子就可以了

#include <iostream>
#include <string>
using namespace std;
int main(){string s1;string s2 = "c plus plus";string s3 = s2;string s4 (5, 's');return 0;
}

然后还要看一下这个函数:to_string

for(int i=0;i<;i++){s2 = to_string(i);name = s1 + s2+s3;imwrite(name,image);
}

最后加个延时就ok了:

在linux下

#include <unistd.h>
sleep(5)//延迟5秒 

如果你想延迟一秒以内

#include <ctime>
void   Delay(int   time)//time*1000为秒数
{
clock_t   now   =   clock(); while(   clock()   -   now   <   time   );
} 

附上完整代码:

#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include <opencv2/opencv.hpp>   // Include OpenCV API
#include<iostream>
#include"string.h"
#include "unistd.h"using namespace cv;
using namespace std;string s1 = "/home/nx/图片/车道数据集/";
string s2,name;
string s3 = ".png";int main(int argc, char * argv[]) try
{// Declare depth colorizer for pretty visualization of depth datars2::colorizer color_map;// Declare RealSense pipeline, encapsulating the actual device and sensorsrs2::pipeline pipe;// Start streaming with default recommended configurationpipe.start();const auto window_name = "Display Image";namedWindow(window_name, WINDOW_AUTOSIZE);while (waitKey(1) < 0 && getWindowProperty(window_name, WND_PROP_AUTOSIZE) >= 0){rs2::frameset data = pipe.wait_for_frames(); // Wait for next set of frames from the camerars2::frame depth = data.get_depth_frame().apply_filter(color_map);// Query frame size (width and height)const int w = depth.as<rs2::video_frame>().get_width();const int h = depth.as<rs2::video_frame>().get_height();// Create OpenCV matrix of size (w,h) from the colorized depth dataMat image(Size(w, h), CV_8UC3, (void*)depth.get_data(), Mat::AUTO_STEP);// Update the window with new data//imshow(window_name, image);for(int i=1;i<10000;i++){s2 = to_string(i);name = s1 + s2+s3;imwrite(name,image);sleep(1);}}return EXIT_SUCCESS;
}
catch (const rs2::error & e)
{std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n    " << e.what() << std::endl;return EXIT_FAILURE;
}
catch (const std::exception& e)
{std::cerr << e.what() << std::endl;return EXIT_FAILURE;
}

最后就是开机自启了:这里我们要用到的就是rc.local脚本,这个是在开机时会执行的,然后我们在倒数第二行就是 exit 0之前写上命令行命令就可以了。

参考:https://www.cnblogs.com/EasonJim/p/7573292.html

输入这个命令

sudo vim /etc/rc.local

然后在倒数第二行:/home/nx/文档/paizhao/paizhao就可以了,搞定!后来发现这样不行,要加两行:先cd,在./在exit 0前。

其实我试了很多方法最后就这种方法成功了!

还有我把librealreason的那个上传到了我的网盘上了,想要的留言。

然后我后来想拍rgb的了,但是后来发现写在一起不好使,然后就想执行两个(顺序),然后:https://blog.csdn.net/x13163303344/article/details/89390144

发现不太行,最后就是在两个应用程序之间加个&就可以了

使用realsense d415进行拍照,延迟,to_string,string,开机自启相关推荐

  1. Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行)

    ORB-SLAM3论文地址:https://arxiv.org/abs/2007.11898 代码地址:https://github.com/UZ-SLAMLab/ORB_SLAM3 一.安装库 根据 ...

  2. Ubuntu18.04+python3.6+pcl-1.8+opencv3+realsense D415环境搭建

    Ubuntu18.04+python3.6+pcl-1.8+opencv3+realsense D415环境搭建 说明:此篇文章是参考了几位博主,因为自己要用realsenseD415深度相机,并且使 ...

  3. Realsense D415与D435的差异

    Realsense D415和D435是Intel在2018年推出的两款深度相机,它们的主要区别是视场角和快门类型. D415是卷帘快门,而D435是全局快门,所以D435更适应快速运动的场景.D41 ...

  4. SLAM入坑之一:用realsense D415跑一下ORB-SLAM在ROS-melodic上

    一.安装ROS,realsense-ros,librealsense 这一块有很多大佬们已经分享了的,不再赘述了,ROS,realsense-ros直接按照官网的方法去安装. librealsense ...

  5. 英特尔 RealSense D415 + OpenCV 4.0 + VS2017 配置方法

    首先是Opencv 4.0 +VS2017的配置过程,网上已经有很多类似教程,这里不再累赘:https://www.cnblogs.com/xinxue/p/5766756.html 接下来开始配置D ...

  6. 英特尔Realsense学习笔记二:pyqt5 实时显示 Realsense D415 深度图像和彩色图像

    要做一个D415相机的最高分辨率的拍摄程序,深度相机最高分辨率为1280*720,普通屏幕是不能同时显示两个1280*720的,由于拍摄的时候由于是拍摄人体面部,所以深度图和彩色图像都截取中间的640 ...

  7. 树莓派4 Ubuntu18.04 使用realsense d415

    前言 1.官网说打包好的dpkg是针对ubuntu电脑板的,需要arm64位CPU硬件,树莓派只能通过编译的方式安装. 2.树莓派默认分配给系统的内存只有1个G,在realsense编译时不够用,编译 ...

  8. python 调用 Intel realsense D415摄像头

    1.搭建python3开发环境(wind10 ) 安装Intel.RealSense.SDK.exe后,在安装目录-/Intel RealSense SDK 2.0/bin/x64目录下有两个.pyd ...

  9. Ubuntu18安装Realsense D415

    官方安装驱动SDK2.0 https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md 打开 ...

最新文章

  1. 2022-2028年中国出行O2O市场深度调研及投资前景预测报告
  2. 运动框架实现思路(js)
  3. python 绝对路径
  4. 机器学习之琐碎知识(代码运行问题)
  5. 丰田chr优惠5万_盛秦西苑三期预计下半年开盘 排卡享交1万抵5万优惠
  6. 错误消息:'events' 为空或不是对象
  7. 洞察疫情,微软推出新冠数据分析网站 COVID Insights
  8. TCP和UDP区别详解
  9. 设置网页title旁边的小图标详解
  10. 微信企业消息推送方案
  11. Python分析《三国演义》中的社交网络
  12. 共享网络获取树莓派ip_从零开始:树莓派共享 WiFi 秒变无线热点(树莓派路由器...
  13. python复制单元格格式太多_你觉得复制粘贴excel浪费时间,那你该学这些技巧
  14. 箱包卖家注意了!《淘宝网箱包行业标准》出炉 !
  15. 你真的了解验证码吗?
  16. STM32 串口 FIFO
  17. 常用开发工具 之 SQLite 数据库 与 Navicat for SQLite 的下载、安装与简单使用说明
  18. 【渝粤题库】陕西师范大学151107 管理会计 作业(高起专)
  19. 最新消息:@live.com@live.cn邮箱正式开放注册了!
  20. 手把手系列--编写Keil MDK 外部FLASH下载算法

热门文章

  1. Sambam文件格式详解
  2. iOS开发系列课程(01) --- iOS编程入门
  3. #3194. 去月球
  4. 如何自学通过PMP考试
  5. 核聚变实现历史性突破
  6. Linux部署Nginx实现反向代理
  7. 电脑一直蓝屏怎么办?重装系统方法
  8. 从穿孔纸带到当代智能手机软件的设计编程,述说码农前行路
  9. 怎么用计算机做模型,如何运用ArcScene制作简洁的三维建模
  10. win10关闭(更新并关机)与(恢复更新)