C++程式如下:
- #include <librealsense2/rs.hpp>
- #include <opencv2/opencv.hpp>
- #include <iostream>
- using namespace rs2;
- using namespace cv;
- using namespace std;
- int main(int argc, char* argv[])
- try
- {
- cout << "顯示color_grab, depth影格,加上對齊修正align。\n";
- colorizer color_map(3);
- /*著色的代碼如下
- 0 - Jet
- 1 - Classic
- 2 - WhiteToBlack
- 3 - BlackToWhite
- 4 - Bio
- 5 - Cold
- 6 - Warm
- 7 - Quantized
- 8 - Pattern
- 9 - Hue
- */
- pipeline pipe;
- rs2::align align2color(RS2_STREAM_COLOR);
- config cfg;
- int w = 1280, h = 720, FPS = 30;
- cfg.enable_stream(RS2_STREAM_COLOR, w, h, RS2_FORMAT_BGR8, FPS);
- cfg.enable_stream(RS2_STREAM_DEPTH, w, h, RS2_FORMAT_Z16, FPS);
- auto profile = pipe.start(cfg);
- // Camera warmup
- frameset data= pipe.wait_for_frames();
- hole_filling_filter holeFilter;//補洞filter
- while (1)
- {
- frameset data = pipe.wait_for_frames(); // Wait for next set of frames from the camera
- data = align2color.process(data);
- data.apply_filter(holeFilter);//補洞
- frame color = data.get_color_frame();
- frame depth = data.get_depth_frame().apply_filter(color_map);
- // Create OpenCV matrix of size (w,h) from the colorized depth data
- Mat color_im(h, w, CV_8UC3, (void*)color.get_data());
- Mat depth_im(h, w, CV_8UC3, (void*)depth.get_data());
- GaussianBlur(depth_im, depth_im, Size(3, 3), 3, 3);
- dilate(depth_im, depth_im, 1);//擴張
- erode(depth_im, depth_im, 1);//侵蝕
- Mat depth2;
- threshold(depth_im, depth2, 120, 255, THRESH_BINARY);
- color_im = color_im | depth2 ;
- // Update the window with new data
- imshow("color_grab", color_im);
- imshow("depth", depth_im);
- if (waitKey(1)>0)break;
- }
- destroyAllWindows();
- pipe.stop();
- return 0;
- }
- catch (exception& e) {
- cerr << e.what();
- return 1;
- }
沒有留言:
張貼留言