创建项目可参考:https://blog.csdn.net/hanshuning/article/details/100972596
1.OpenCV显示一帧彩色图像
// include the librealsense C++ header file
#include <librealsense2/rs.hpp>
// include OpenCV header file
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//Contruct a pipeline which abstracts the device
rs2::pipeline pipe;
//Create a configuration for configuring the pipeline with a non default profile
rs2::config cfg;
//Add desired streams to configuration
cfg.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_BGR8, 30);
//Instruct pipeline to start streaming with the requested configuration
pipe.start(cfg);
// Camera warmup - dropping several first frames to let auto-exposure stabilize
rs2::frameset frames;
for(int i = 0; i < 30; i++)
{
//Wait for all configured streams to produce a frame
frames = pipe.wait_for_frames();
}
//Get each frame
rs2::frame color_frame = frames.get_color_frame();
// Creating OpenCV Matrix from a color image
Mat color(Size(640, 480), CV_8UC3, (void*)color_frame.get_data(), Mat::AUTO_STEP);
// Display in a GUI
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", color);
waitKey(0);
return 0;
}
2.OpenCV显示RGB图像视频
// include the librealsense C++ header file
#include <librealsense2/rs.hpp>
// include OpenCV header file
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//Contruct a pipeline which abstracts the device
rs2::pipeline pipe;
//Create a configuration for configuring the pipeline with a non default profile
rs2::config cfg;
//Add desired streams to configuration
cfg.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_BGR8, 30);
//Instruct pipeline to start streaming with the requested configuration
pipe.start(cfg);
// Camera warmup - dropping several first frames to let auto-exposure stabilize
rs2::frameset frames;
for(int i = 0; i < 30; i++)
{
//Wait for all configured streams to produce a frame
frames = pipe.wait_for_frames();
}
//Get each frame
rs2::frame color_frame = frames.get_color_frame();
// Creating OpenCV Matrix from a color image
Mat color(Size(640, 480), CV_8UC3, (void*)color_frame.get_data(), Mat::AUTO_STEP);
// Display in a GUI
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", color);
waitKey(0);
return 0;
}
3.OpenCV显示一帧红外和深度数据(与RGB没有什么不同)
// include the librealsense C++ header file
#include <librealsense2/rs.hpp>
// include OpenCV header file
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//Contruct a pipeline which abstracts the device
rs2::pipeline pipe;
//Create a configuration for configuring the pipeline with a non default profile
rs2::config cfg;
//Add desired streams to configuration
cfg.enable_stream(RS2_STREAM_INFRARED, 640, 480, RS2_FORMAT_Y8, 30);
cfg.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16, 30);
//Instruct pipeline to start streaming with the requested configuration
pipe.start(cfg);
// Camera warmup - dropping several first frames to let auto-exposure stabilize
rs2::frameset frames;
for(int i = 0; i < 30; i++)
{
//Wait for all configured streams to produce a frame
frames = pipe.wait_for_frames();
}
//Get each frame
rs2::frame ir_frame = frames.first(RS2_STREAM_INFRARED);
rs2::frame depth_frame = frames.get_depth_frame();
// Creating OpenCV matrix from IR image
Mat ir(Size(640, 480), CV_8UC1, (void*)ir_frame.get_data(), Mat::AUTO_STEP);
// Apply Histogram Equalization
equalizeHist( ir, ir );
applyColorMap(ir, ir, COLORMAP_JET);
// Display the image in GUI
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", ir);
waitKey(0);
return 0;
}
4.OpenCV显示红外和深度数据视频(与RGB显示没什么区别)
// include the librealsense C++ header file
#include <librealsense2/rs.hpp>
// include OpenCV header file
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//Contruct a pipeline which abstracts the device
rs2::pipeline pipe;
//Create a configuration for configuring the pipeline with a non default profile
rs2::config cfg;
//Add desired streams to configuration
cfg.enable_stream(RS2_STREAM_INFRARED, 640, 480, RS2_FORMAT_Y8, 30);
cfg.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16, 30);
//Instruct pipeline to start streaming with the requested configuration
pipe.start(cfg);
// Camera warmup - dropping several first frames to let auto-exposure stabilize
rs2::frameset frames;
for (int i = 0; i < 30; i++)
{
//Wait for all configured streams to produce a frame
frames = pipe.wait_for_frames();
}
const auto window_name = "Display Image";
while (1)
{
//Get each frame
frames = pipe.wait_for_frames(); // Wait for next set of frames from the camera
rs2::frame ir_frame = frames.first(RS2_STREAM_INFRARED);
rs2::frame depth_frame = frames.get_depth_frame();
// Creating OpenCV matrix from IR image
Mat ir(Size(640, 480), CV_8UC1, (void*)ir_frame.get_data(), Mat::AUTO_STEP);
imshow("Image1", ir);
// Apply Histogram Equalization
equalizeHist(ir, ir);
imshow("Image2", ir);
applyColorMap(ir, ir, COLORMAP_JET);
// Display the image in GUI
namedWindow(window_name, WINDOW_AUTOSIZE);
imshow("Display Image", ir);
waitKey(1);
}
return 0;
}
直方图均衡化之前、直方图均衡化之后、最终显示: