Realsense(四)github上一种提取彩色和深度视频流并转为mat的方案
来源:互联网 发布:3dmax优化到几核几县 编辑:程序博客网 时间:2024/04/28 11:44
/*******************************************************************************Intel Realsene SDKThe program starts Color and Depth Stream using Intel Realsense SDKand converting its frame from PXCImage to Mat variable.Easy for Image processing in Intel Realsense SDK Camera.*******************************************************************************/#include <windows.h>#include <wchar.h>#include "pxcsensemanager.h"#include "util_render.h" //SDK provided utility class used for rendering (packaged in libpxcutils.lib)#include <conio.h>#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/calib3d/calib3d.hpp>#include <iostream>#include <stdio.h>#include <conio.h>#include <wchar.h>#include <vector>#include "pxcsession.h"#include "pxccapture.h"#include "util_render.h"#include "util_cmdline.h"#include "pxcprojection.h"#include "pxcmetadata.h"#include "util_cmdline.h"using namespace std;using namespace cv;int wmain(int argc, WCHAR* argv[]){cout << "Intel Realsense SDK Hacking using Opencv" << endl;cout << "Intel Realsense Camera SDK Frame Capture in opencv Mat Variable -- by Deepak" << endl;cout << "Compiled with OpenCV version " << CV_VERSION << endl << endl;PXCSenseManager *psm = 0;psm = PXCSenseManager::CreateInstance();if (!psm) {wprintf_s(L"Unable to create the PXCSenseManager\n");return 1;}psm->EnableStream(PXCCapture::STREAM_TYPE_COLOR, 640, 480); //depth resolutionpsm->EnableStream(PXCCapture::STREAM_TYPE_DEPTH, 640, 480); //depth resolutionpsm->Init();UtilRender color_render(L"Color Stream");UtilRender depth_render(L"Depth Stream");///////////// OPENCVIplImage *image = 0;CvSize gab_size;gab_size.height = 480;gab_size.width = 640;image = cvCreateImage(gab_size, 8, 3);IplImage *depth = 0;CvSize gab_size_depth;gab_size_depth.height = 240;gab_size_depth.width = 320;depth = cvCreateImage(gab_size, 8, 1);PXCImage::ImageData data;PXCImage::ImageData data_depth;unsigned char *rgb_data;float *depth_data;PXCImage::ImageInfo rgb_info;PXCImage::ImageInfo depth_info;///////for (;;){if (psm->AcquireFrame(true)<PXC_STATUS_NO_ERROR) break;PXCCapture::Sample *sample = psm->QuerySample();PXCImage *colorIm, *depthIm;// retrieve the image or frame by type from the samplecolorIm = sample->color;depthIm = sample->depth;PXCImage *color_image = colorIm;PXCImage *depth_image = depthIm;color_image->AcquireAccess(PXCImage::ACCESS_READ_WRITE, PXCImage::PIXEL_FORMAT_RGB24, &data);depth_image->AcquireAccess(PXCImage::ACCESS_READ_WRITE, &data_depth);rgb_data = data.planes[0];for (int y = 0; y<480; y++){for (int x = 0; x<640; x++){for (int k = 0; k<3; k++){image->imageData[y * 640 * 3 + x * 3 + k] = rgb_data[y * 640 * 3 + x * 3 + k];}}}short* depth_data = (short*)data_depth.planes[0]; //for (int y = 0; y<920; y++){for (int x = 0; x<320; x++){depth->imageData[y * 320 + x] = depth_data[y * 320 + x];}}color_image->ReleaseAccess(&data);depth_image->ReleaseAccess(&data_depth);cv::Mat rgb(image);imshow("Color_cv2", rgb);cv::Mat dep(depth);imshow("depth_cv2", dep);/////////////opencvif (cvWaitKey(10) >= 0)break;////////if (!color_render.RenderFrame(color_image)) break;if (!depth_render.RenderFrame(depth_image)) break;psm->ReleaseFrame();}cvReleaseImage(&image);cvReleaseImage(&depth);psm->Release();return 0;}
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">用过这个摄像头的都知道它经常会出现一些闪退的情况,编译之后运行如果获取视频流失败闪退,请重新生成解决方案,再运行,多试几次就可以了。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">深度图的转化效果如下:</span>
github参考地址:https://github.com/dthepok/realsense
0 0
- Realsense(四)github上一种提取彩色和深度视频流并转为mat的方案
- Realsense(一)提取彩色和深度视频流并实现pxcimage到mat
- 从RealSense中提取完整的深度和彩色图像,并存在opencv中的Mat里
- Realsense SR300 获取深度和彩色图像
- Realsense(三)截取n帧彩色及深度图并保存
- intel realsense SR300 深度图像和彩色图像对齐
- Realsense(二)实现pxcimage到mat转化的另一种代码方案
- 深度相机(四)--Realsense概览
- RealSense R200输出深度视频流,鼠标左键点击可输出该点的深度
- OPenNI获取并保存彩色、深度视频
- realsense彩色图与深度图对齐
- 【计算机视觉】深度相机(四)--Realsense概览
- 使用OpenNI2读取oni格式的文件,并将其中的彩色视频,深度视频显示并保存
- kinecty一代和realsense r200的深度数据对比
- 关于Kinect深度图和彩色图像提取
- 基于深度摄像头的障碍物检测(realsense+opencv)
- 基于深度摄像头的障碍物检测(realsense+opencv)
- OpenCv学习笔记(四):使用split函数提取彩色图像的三个通道
- ionic 完美仿微信摇一摇
- 架构师应具备哪些能力
- SQLite数据库
- Ucore lab2
- Java中getBytes()的用法
- Realsense(四)github上一种提取彩色和深度视频流并转为mat的方案
- 能够用手指滑动的焦点轮播图——swipe.js
- 绑定Service
- Jena读取Mysql数据的本体数据
- 关于selector中图片显示的一个小问题
- Swift 值类型和引用类型
- 图片真实地址提取
- leetcode 84. Largest Rectangle in Histogram
- 图像的直方图